Spring后置处理器BeanPostProcessor
Spring提供了许多扩展点,如FactoryBean、Aware,这里还有BeanPostProcessor
在Spring的生命周期中,BeanPostProcessor在初始化前后处理bean。
Spring中的bean每个都会经过Bean后置处理器,其中两个方法会一个一个接受bean的实例和beanName,判断类型进行处理即可。
若想使用BeanPostProcessor对bean进行增强,实现该接口即可。
还可以实现Ordered接口处理不同顺序的后置处理器。
@Component
public class BeanPost implements BeanPostProcessor {
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println(beanName);
//通过类型处理
if(bean instanceof User){
//转换类型,赋值
((User) bean).setAge(19);
}
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println(bean);
//通过名字处理
if(beanName.equals("user")){
((User)bean).setSex("女");
}
return bean;
}
}
User bean = ContextUtil.getBean(User.class);
bean.setName("jack");//测试中只增加了姓名
System.out.println(bean);
//后置处理器中输出的内容
user
User(name=null, id=null, sex=null, age=19)
//最后测试中输出的内容
User(name=jack, id=null, sex=女, age=19)