InitializingBean
public class MyAware implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("InitializingBean.afterPropertiesSet");
}
}
在bean执行init-method之前执行的,设置完bean中的property后执行,使用这个方法我们可以初始化一些bean中的属性,一般情况下自定义注入的时候都会使用它
BeanPostProcessor
public class MyPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("4.MyService的BeanPostProcess.postProcessBeforeInitialization--"+beanName);
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("6.MyService的BeanPostProcess.postProcessAfterInitialization--"+beanName);
return bean;
}
}
postProcessBeforeInitialization在init-method方法执行之前,postProcessAfterInitialization在init-method方法之后
BeanFactoryPostProcessor
@Configuration
public class MyPostProcessor {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
System.out.println("BeanFactoryPostProcessor的postProcessBeanFactory");
}
}
在BeanFactory容器构建时触发
总结
在spring框架中PostProcessor这种类切面的接口使用的非常广泛,无论是在Bean初始化后修改属性值还是直接改变bean的实现类都可以让其足够的灵活