Spring Bean生命周期

  1. 解析类得到BeanDefintioin(通过ComponentScan注解 筛选的非懒加载的bean)
  2. 如果有多个构造方法,则要推断构造方法
  3. 确定好构造方法后,进行实例化得到一个对象
  4. 对对象中加了@Autowire注解的属性进行属性填充(即完成依赖注入)
  5. 回调Aware方法,比如BeanNameAware,BeanFactoryAware
  6. 调用BeanPostProcess的初始化前的方法
  7. 回调初始化方法(有没有实现InitializingBean接口,有实现则执行)
  8. 调用BeanPostProcess的初始化后的方法,在这里会进行AOP
  9. 如果当前创建的bean是单例的则会把bean放入单例池
  10. 使用bean
  11. Spring容器关闭时调用DisposableBean中的destroy方法

Spring中的事物是如何实现的

  1. Spring事物底层是基于数据库事务和AOP机制的
  2. 首先对于使用了@Transactional注解的bean,Spring会创建一个代理对象作为bean
  3. 当调用代理对象的方法时,会判断该方法上是否加了@Transactional注解
  4. 如果加了,那么则利用事物管理器创建一个数据库连接
  5. 并且修改数据连接的autocommit属性为false,禁止此连接自动提交,这是实现spring事务非常重要的一步
  6. 然后执行当前方法,方法中会执行sql
  7. 执行完当前方法后,如果没有出现异常则提交事务
  8. 如果出现异常,并且这个异常是需要回滚的就会回滚事务,否则任然提交事务
  9. spring事务的隔离级别对应的是数据库的隔离级别
  10. spring事务的传播机制是spirng事务自己实现的,也是spring事务中最复杂的
  11. spring事务的传播机制是基于数据库连接来做的,一个数据库连接一个事务,如果传播机制配置为需要新开一个事务,那么实际上就是先建立一个数据库连接,再次数据库连接上执行sql

Spring 使用了哪些设计模式

  1. 简单工厂 BeanFactory
  2. 工厂方法 factoryBean
  3. 单例模式
  4. 适配器模式 advisorAdapter接口,对Advisor进行了适配
  5. 装饰器模式 BeanWrapper
  6. 动态代理 AOP
  7. 观察模式 事件监听器
  8. 策略模式
  9. 模板模式 jdbcTemplate
  10. 委派模式
  11. 责任链模式 BeanPostProcessor
  12. 访问者模式

Spring支持的几种bean的作用域

image.png

Spring容器启动流程

image.png

SpringMVC的底层原理

  1. 用户发送请求到前端控制器DispatcherServlet。
  2. DispatcherServlet收到请求调用HandlerMapping处理器映射器
  3. 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
  4. DispatcherServlet调用HandlerAdapter处理适配器。
  5. HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)
  6. Controller执行完成返回ModelAndView
  7. HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet
  8. DispatcherServlet将ModelAndView传给ViewResolver视图解析器
  9. ViewResolver解析后返回具体的View
  10. DispatcherServlet 根据View渲染视图(即将模型数据填充至视图中)
  11. DispatcherServlet响应用户

SpringMVC的九大组件 Resolver:解析器

  1. HandlerMapping
  2. HandlerAdapter
  3. HandelExceptionResolver
  4. ViewResolver
  5. RequestToViewNameTranslator
  6. LocalResolver
  7. TimerResolver
  8. MultipartResolver
  9. FlashMapManager

AHF_BL
1 声望0 粉丝

« 上一篇
java基础
下一篇 »
java设计模式