Spring 复习 二、初始化与销毁

177 阅读1分钟

二、初始化与销毁

初始化:bean在被创建好,并赋值好后,才会被初始化

销毁: 单例bean在ioc容器被销毁时会被销毁,而多例bean需要手动销毁

方式1:@Bean属性

@Bean注解有两个属性

属性名作用
initMethodbean的初始化方法名
destroyMethodbean的销毁方法名

方式2: 实现接口

让类实现InitializingBeanDisposableBean接口表明,该类创建的bean需要被初始化与销毁

方式3:JSR250注解

在类的方法上标注@PostConstruct注解表示该方法为bean的初始化方法,@PreDestroy为销毁方法

特殊:BeanPostProcessor

若需要更加细致的bean创建环节,例如在bean的初始化前后做一些工作,就实现BeanPostProcessor接口

单例非懒加载bean的创建过程:

  1. 构造器创建
  2. 属性赋值(非自动装配)
  3. 所有BeanPostProcessorpostProcessBeforeInitialization方法
  4. 初始化
  5. 所有BeanPostProcessorpostProcessAfterInitialization方法
  6. 使用bean
  7. 销毁

往ioc容器中添加该类的实现类,其中的方法会在指定bean的初始化前后被调用。详见BeanPostProcessor

要注意的是,在postProcessBeforeInitialization方法或postProcessAfterInitialization方法中返回null,将会导致后面所有的BeanPostProcessor中的剩余的对应的未执行方法无法得到执行。

Spring底层经常使用BeanPostProcessor来处理bean类中的注解,如@Autowired注入,@PostConstruct初始化等