Spring 在 bean 初始化时进行三个检测扩展,也就是说我们可以对 bean 进行三个不同的定制化处理,前面两篇博客 【死磕 Spring】----- IOC 之 深入分析 Aware 接口 和 【死磕 Spring】----- IOC 之 深入分析 BeanPostProcessor 已经分析了 Aware 接口族 和 BeanPostProcessor 接口,这篇分析 InitializingBean 接口和 init-method 方法。
InitializingBean
Spring 的 InitializingBean 接口为 bean 提供了定义初始化方法的方式,它仅包含了一个方法:afterPropertiesSet()。
public interface InitializingBean {
/**
* 该方法在 BeanFactory 设置完了所有属性之后被调用
* 该方法允许 bean 实例设置了所有 bean 属性时执行初始化工作,如果该过程出现了错误则需要抛出异常
*/
void afterPropertiesSet() throws Exception;
}
Spring 在完成实例化后,设置完所有属性,进行 “Aware 接口” 和 “BeanPostProcessor 前置处理”之后,会接着检测当前 bean 对象是否实现了 InitializingBean 接口,如果是,则会调用其 afterPropertiesSet() 进一步调整 bean 实例对象的状态。
public class InitializingBeanTest implements InitializingBean {
private String name;
@Over