1.Spring中使用到了哪些设计模式?
工厂模式:如通过BeanFactory或ApplicationContext创建Bean对象;
单例模式:Spring中的Bean对象就是单例模式;
代理模式:Spring AOP就是基于动态代理实现的;
适配器模式:Spring MVC中,DispatcherServlet根据请求找到Handler后,开始由适配器处理;
装饰者模式:使DataSource在不改动代码的情况下切换数据源;
策略模式:Spring对资源的访问,如Resource接口;
2.Spring Bean的生命周期流程
实例化、初始化、服务、销毁;
初始化阶段有个最重要的接口→BeanPostProcessor;
3.什么是IOC和AOP?
IOC(控制反转):由对象自身创建自己的关联或者依赖对象改变为由外部容器将关联或依赖对象创建;
好处:实现了对象之间的解耦,同时降低了应用开发的代码和复杂度,使开发人员更专注业务;
AOP(切面编程):把程序中一些重复的代码抽出来做成一个个的切面;
好处:降低业务逻辑耦合性,提高程序的可重用性和开发效率;
4.Spring有哪些容器类?
BeanFactory:是一个最简单的容器,主要功能是为依赖注入提供支持;
ApplicationContext:是spring中的高级容器,是BeanFactory的子接口,支持懒加载的相关配置,也有功能增强;
5.BeanFactory和ApplicationContext的区别?
BeanFactory:在启动的时候不会去实例化Bean,只有从容器中拿Bean的时候才会去实例化,不支持懒加载相关的配置;
ApplicationContext:在启动的时候就实例化所有的Bean,支持懒加载相关的配置,是BeanFactory的子接口;
6.Bean的作用域
7.Spring的单例是否线程安全?
singleton:不安全;
prototype:安全;
8.BeanFactory和FactoryBean的区别?
BeanFactory:是一个工厂类,用于管理Bean的一个工厂,在Spring中,所有的Bean都是由BeanFactory来进行管理的;
FactoryBean:也是一个Bean,这个Bean不是一个简单的Bean,可以对Bean的实例化过程进行修饰或者自定义,但是FactoryBean本质是BeanFactory管理的;
9.Spring事务的隔离级别?
DEFAULT(默认);
READ_UNCOMMITTED(读未提交);
READ_COMMITTED(读已提交);
REPEATABLE_READ(可重复读);
SERIALIZABLE(可串行化);
10.Spring事务失效的原因?
非public方法;
事务未被spring接管;
异常类型不对;
数据源不支持事务;
11.SpringMVC的工作流程
用户通过浏览器给前端处理器(DispatchServlet)发送请求;
前端处理器将请求转发给处理器映射器(HandlerMapping);
处理器映射器根据请求找到负责该请求的处理器,封装为处理器执行链后返回给前端控制器;
前端控制器根据执行链中的处理器找到对应的处理器适配器;
处理器适配器调用处理器的Controller;
Controller将处理结果及映射视图封装到ModelAndView对象中,并将其返回给处理器适配器;
处理器适配器将结果返回给前端控制器;
前端控制器调用视图解析器将ModelAndView中的视图封装成视图对象;
视图解析器将封装的视图view对象返回给前端控制器;
前端控制器调用视图对象,对其进行渲染形成响应对象,返回给客户端浏览器;