Spring的Bean后置处理器
1. 实体类
/** * @author 70KG * @Title: Train * @Description: * @date 2018/7/23下午11:31 * @From www.nmyswls.com */ public class Train { public Train() { System.out.println("Train构造方法执行。。。。。。"); } public void init() { System.out.println("Train的init方法执行。。。。。。"); } public void destroy() { System.out.println("Train的destroy方法执行。。。。。。"); } }
2. 配置类
⚠️加上对实现类的扫描
/** * @author 70KG * @Title: config * @Description: * @date 2018/7/23下午11:31 * @From www.nmyswls.com */ @Configuration @ComponentScan("com.nmys.story.springCore.springioc.beanpostprocessor_") public class Config01 { @Bean(initMethod = "init",destroyMethod = "destroy") public Train train(){ return new Train(); } }
3. BeanPostProcessor的实现类
⚠️加上@Component注解,目的为了让spring来管理这个实现类
/** * @author 70KG * @Title: BeanPostProcessorImpl * @Description: bean的后置处理器 * @date 2018/7/23下午11:31 * @From www.nmyswls.com */ @Component public class BeanPostProcessorImpl implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { // 返回一个传过来的对象 // 在初始化方法调用之前进行后置处理工作 // 什么时候调用呢?在init-method方法之前就调用了 System.out.println("postProcessBeforeInitialization======" + beanName + "======" + bean); return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println("postProcessAfterInitialization======" + beanName + "======" + bean); return bean; } }
4. 测试
/** * @author 70KG * @Title: FutureTaskTest * @Description: * @date 2018/7/23下午11:31 * @From www.nmyswls.com */ public class Test01 { @Test public void test() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(Config01.class); ac.close(); } }
5. 结果
Train构造方法执行。。。。。。 postProcessBeforeInitialization======train======com.nmys.story.springCore.springioc.beanpostprocessor_.Train@3b69e7d1 Train的init方法执行。。。。。。 postProcessAfterInitialization======train======com.nmys.story.springCore.springioc.beanpostprocessor_.Train@3b69e7d1 Train的destroy方法执行。。。。。。
BeanPostProcessor主要是在类初始化之前,跟之后处理相应的事。