Java面试题之Spring/Spring MVC

十、Spring/Spring MVC

90. 为什么要使用 spring?

1. 方便解耦,可以将对象间的依赖关系交给spring
2. spring支持aop编程,可以很方便的对程序进行监控,拦截
3. 方便测试,支持junit
4. 集成其他框架比较方便
5. 声明式事务

91. 解释一下什么是 aop?

aop即面向切面编程,在原有功能的基础上通过aop添加新的功能,而原有的功能并不知道新添加的功能.
简单来说,就是在某个类或者方法执行前后打个标记,声明在执行到这里之前要先执行什么,之后执行什么,插入了新的执行方法.

92. 解释一下什么是 ioc?

ioc控制反转.即把创建对象和维护对象之间关系的权利交给spring容器去做,程序自己不再维护.
传统:自己使用new 或者getInstance直接或者间接创建一个对象(高耦合,不易测试)
spring:容器使用工厂模式为了创建了所需要的对象,我们不用自己创建,直接调用即可.

93. spring 有哪些主要模块?

1. spring core:    core是spring的核心类库,它的所有功能都依赖于该类库,主要实现IOC功能.
2. AOP:    spring aop提供了常用的拦截器供用户配置.
3. ORM:    该模块提供对常用的ORM框架的管理和辅助支持.spring自己不实现ORM,只是对常见的ORM进行封装管理
4. DAO: spring提供对jdbc的支持,统一管理jdbc事物,并不对其进行实现
5. WEB:    提供对常用框架,如struts2的支持,将spring的资源注入给这些框架,也能在这些框架的前后插入拦截器
6. Context: 提供框架式的bean访问方式,其他程序可以通过Context访问spring的bean资源
7. MVC:    提供一套轻量级的MVC实现,简单方便.

94. spring 常用的注入方式有哪些?

1.构造器注入:可以在xml中通过constructor-arg标签来注入一个对象到构造器中
2.setter方法注入:首先要配置被注入的bean,在该bean对应的类中,应该有要注入的对象属性或者基本数据类型的属性。
 例如:为UserBiz类注入UserDAO,同时为UserBiz注入基本数据类型String,那么这时,就要为UserDAO对象和String类型设置setter方法.,用于进行依赖注入。
3.注解注入:基于注解在xml文件中开启注解扫描以后,就可以在filed上使用注解@Autowired或者@Rsource来注入对象.

95. spring 中的 bean 是线程安全的吗?

不是的,spring并没有对单例bean做多线程的封装.

96. spring 支持几种 bean 的作用域?

1.singleton: 单例,默认作用域,在spring容器中此种类型的bean只有一个
2.prototype: 原型,每次调用getBean方法就会产生一个新的实例.
3.request: 每次HTTP请求都会产生不同的bean实例.
4.session: 每次会话产生一个实例
5.global-session: 所有会话共享一个实例

97. spring 自动装配 bean 有哪些方式?

1.xml配置方式
2.注解扫描方式

98. spring 事务实现方式有哪些?

1.编程式事务 允许用户在代码中精确定义事务的边界
2.声明式事务    基于AOP,将操作和事务管理分离.

99. 说一下 spring 的事务隔离?

隔离级别定义了一个事务可能受其他并发事务影响的程度。 
spring设置了五种事务个例级别:
1.ISOLATION_DEFAULT:                            使用数据库默认的隔离级别
2.ISOLATION_READ_UNCOMMITTED:     读未提交,最低的隔离级别,允许读未提交的数据变更,可能会导致脏读,幻读或不可重复读.
3.ISOLATION_READ_COMMITTED:          读已提交,允许读取已经提交的数据,可以阻止脏读,但是幻读和不可重复读有可能发生.
4.ISOLATION_REPEATABLE_READ:         可重复读,保证了一个事务不能读取另一个未提交的数据.可以避免不可重复读和脏读
5.ISOLATION_SERIALIZABLE:                   串行化,事务被处理为顺序执行,通过锁定事务相关的数据库来实现. 

100. 说一下 spring mvc 运行流程?

1.用户向服务器发送请求,被springMVC的前端控制器拦截(DispatcherServlet)
2.前端控制器对请求的URL进行解析,得到标识符URI,根据URI调用处理器映射器
3.处理器映射器与该Handler有关的对象和拦截器信息返回给DispatcherServlet
4.前端控制器根据获得的处理器信息,调用对应的处理器适配器HandlerAdapter处理数据
5.处理器适配器提取request中的模型数据,开始执行Handler,在此之前还可以做数据合适的转换和数据验证等. 处理完成后向DispatcherServlet返回一个ModelAndView对象
6.前端控制器根据ModelAndView选择合适的视图解析器ViewResolver处理数据
7.视图解析器根据model和view渲染视图,将结果返回给客户端

101. spring mvc 有哪些组件?

1. DispatcherServlet 前端控制器
2. HandlerMapping 请求派发,建立请求和处理器的映射
3. Controller    处理器
4. ModelAndView 封装模型和试图信息
5. ViewResolver 视图处理器,定位页面

102. @RequestMapping 的作用是什么?

 映射请求,指定哪些URL可以被该处理器处理.

103. @Autowired 的作用是什么?

根据类型从容器中取出对象进行注入

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值