9 spring-bean的统一前后置处理器BeanPostProcessor
下面给大家介绍第4种方式,基于实现BeanPostProcessor
接口的方式,为啥没放在之前文章中一起介绍,是因为实现BeanPostProcessor的方式是bean的统一前置后置处理而不是基于某一个bean,
定义一个前置后置处理器MyBeanPostProcessor
如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
public class MyBeanPostProcessor implements BeanPostProcessor { public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("postProcessBeforeInitialization===="+beanName); return bean; } public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println("postProcessAfterInitialization===="+beanName); return bean; } }
|
配置类中增加配置如下:
1 2 3 4
| @Bean public MyBeanPostProcessor getMyBeanPostProcessor(){ return new MyBeanPostProcessor(); }
|
运行测试结果如下:
1 2 3 4 5 6
| postProcessBeforeInitialization====org.springframework.context.event.internalEventListenerProcessor postProcessAfterInitialization====org.springframework.context.event.internalEventListenerProcessor postProcessBeforeInitialization====org.springframework.context.event.internalEventListenerFactory postProcessAfterInitialization====org.springframework.context.event.internalEventListenerFactory postProcessBeforeInitialization====user1 postProcessAfterInitialization====user1
|
下面简单说一下的使用场景:
- 1,可以解析bean中的一些注解转化为需要的属性
- 2,注入处理一些统一的属性,而不用在每个bean中注入
- 3,甚至可以做一些日志打印时间等
本文大部分转自:
51CTO博客-知了123