Spring事务机制及bean生命周期
Spring的的事务传播机制
- REQUIRED(默认):支持使用当前事务,如果当前事务不存在,创建一个新事务。
- SUPPORTS:支持使用当前事务,如果当前事务不存在,则不使用事务。
- MANDATORY:强制,支持使用当前事务,如果当前事务不存在,则抛出Exception。
- REQUIRES_NEW:创建一个新事务,如果当前事务存在,把当前事务挂起。
- NOT_SUPPORTED:无事务执行,如果当前事务存在,把当前事务挂起。
- NEVER:无事务执行,如果当前有事务则抛出Exception。
- NESTED:嵌套事务,如果当前事务存在,那么在嵌套的事务中执行。如果当前事务不存在,则表现跟REQUIRED一样。
spring bean生命周期
bean定义:个人理解把Bean理解为类的代理或代言人,作用为实例化我们的类对象
总的步骤可以分为这四步
- 初始化
- 属性注入
- 实例化
- 销毁
其中细分可以为 - 调用Bean的构造函数(或者工厂方法)实例化Bean.
- 对Bean的成员属性赋值.
- 如果Bean实现了BeanNameAware,调用Bean的setBeanName方法.
- 如果Bean实现了BeanFactoryAware,调用Bean的setBeanFactory方法.
- 如果Bean实现了ApplicationContextAware,调用Bean的setApplicationContext方法.
- 如果容器中配置了BeanPostProcessor,调用BeanPostProcessor的postProcessBeforeInitialization方法
- 如果Bean实现了InitializingBean,调用Bean的afterPropertiesSet方法.
- 如果Bean配置了init-method方法,调用init-method配置的Bean方法.
- 如果容器中配置了BeanPostProcessor,调用BeanPostProcessor的postProcessAfterInitialization方法(即后置处理器)
- Bean处于可以使用的状态.
- 容器销毁
- 如果Bean实现了DisposableBean,调用Bean的destroy方法.
- 如果Bean配置了destroy-method方法,调用destroy-method配置的Bean的方法