BeanPostProcessor
应用程序上下文可以自动检测它们的bean后置处理器bean。bean定义并将它们应用于随后创建的任何bean。
普通bean类工厂允许对后置处理器进行编程注册,适用于通过该工厂创建的所有bean类。
BeanPostProcessor会在每个bean初始化的时候调用一次,两个方法不能返回null,否则从容器中获取不到
@Component
public classEchoBeanPostProcessor implements BeanPostProcessor{
@Autowired
private ApplicationContext applicationContext;
在bean依赖装配(属性设置)完成之后触发
这里可以对指定的bean做一些出来,比如说:返回该对象的代理对象
将这个BeanPostProcessor应用到给定的新bean实例之前任何bean
初始化回调(如InitializingBean的{@代码afterPropertiesSet)
或自定义init方法)。bean已经被赋予了属性值。
public Object postProcessBeforeInitialization(Object bean,String beanName)throws BeanException{
System.out.println(bean.getClass());
if(bean instanceof User){
return new LogUser();
}
if(bean instanceof SpringContextAware){
SpringContextAware sca =(SpringContextAware)bean;
sca.setApplicationContext(applicationContext);
}
return bean;
}
bean init 方法执行之后执行
public Object postProcessAfterInitialization(Object bean,String beanName)throws BeanException{
System.out.println(bean.getClass());
return bean;
}
}