Spring Bean生命周期
- 解析类得到BeanDefintioin(通过ComponentScan注解 筛选的非懒加载的bean)
- 如果有多个构造方法,则要推断构造方法
- 确定好构造方法后,进行实例化得到一个对象
- 对对象中加了@Autowire注解的属性进行属性填充(即完成依赖注入)
- 回调Aware方法,比如BeanNameAware,BeanFactoryAware
- 调用BeanPostProcess的初始化前的方法
- 回调初始化方法(有没有实现InitializingBean接口,有实现则执行)
- 调用BeanPostProcess的初始化后的方法,在这里会进行AOP
- 如果当前创建的bean是单例的则会把bean放入单例池
- 使用bean
- Spring容器关闭时调用DisposableBean中的destroy方法
Spring中的事物是如何实现的
- Spring事物底层是基于数据库事务和AOP机制的
- 首先对于使用了@Transactional注解的bean,Spring会创建一个代理对象作为bean
- 当调用代理对象的方法时,会判断该方法上是否加了@Transactional注解
- 如果加了,那么则利用事物管理器创建一个数据库连接
- 并且修改数据连接的autocommit属性为false,禁止此连接自动提交,这是实现spring事务非常重要的一步
- 然后执行当前方法,方法中会执行sql
- 执行完当前方法后,如果没有出现异常则提交事务
- 如果出现异常,并且这个异常是需要回滚的就会回滚事务,否则任然提交事务
- spring事务的隔离级别对应的是数据库的隔离级别
- spring事务的传播机制是spirng事务自己实现的,也是spring事务中最复杂的
- spring事务的传播机制是基于数据库连接来做的,一个数据库连接一个事务,如果传播机制配置为需要新开一个事务,那么实际上就是先建立一个数据库连接,再次数据库连接上执行sql
Spring 使用了哪些设计模式
- 简单工厂 BeanFactory
- 工厂方法 factoryBean
- 单例模式
- 适配器模式 advisorAdapter接口,对Advisor进行了适配
- 装饰器模式 BeanWrapper
- 动态代理 AOP
- 观察模式 事件监听器
- 策略模式
- 模板模式 jdbcTemplate
- 委派模式
- 责任链模式 BeanPostProcessor
- 访问者模式
Spring支持的几种bean的作用域

Spring容器启动流程

SpringMVC的底层原理
- 用户发送请求到前端控制器DispatcherServlet。
- DispatcherServlet收到请求调用HandlerMapping处理器映射器
- 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
- DispatcherServlet调用HandlerAdapter处理适配器。
- HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)
- Controller执行完成返回ModelAndView
- HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet
- DispatcherServlet将ModelAndView传给ViewResolver视图解析器
- ViewResolver解析后返回具体的View
- DispatcherServlet 根据View渲染视图(即将模型数据填充至视图中)
- DispatcherServlet响应用户
SpringMVC的九大组件 Resolver:解析器
- HandlerMapping
- HandlerAdapter
- HandelExceptionResolver
- ViewResolver
- RequestToViewNameTranslator
- LocalResolver
- TimerResolver
- MultipartResolver
- FlashMapManager
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。