============= 后置处理_编程 ============= 1 实现BeanPostProcessor接口 /src/main/java/cn/tedu/injection/MyBeanPostProcessor.java: public class MyBeanPostProcessor implements BeanPostProcessor { private Logger logger = Logger.getLogger(MyBeanPostProcessor.class); @Override public Object postProcessBeforeInitialization( Object bean, String beanName) throws BeansException { logger.debug("MyBeanPostProcessor.postProcessBeforeInitialization"); return bean; } @Override public Object postProcessAfterInitialization( Object bean, String beanName) throws BeansException { logger.debug("MyBeanPostProcessor.postProcessAfterInitialization"); return bean; } } 2 通过配置告诉Spring框架 /src/main/resources/applicationContext.xml: Before ApplicationContext MyBeanPostProcessor.postProcessBeforeInitialization \ MyBeanPostProcessor.postProcessAfterInitialization | MyBeanPostProcessor.postProcessBeforeInitialization | MyBeanPostProcessor.postProcessAfterInitialization | MyBeanPostProcessor.postProcessBeforeInitialization | MyBeanPostProcessor.postProcessAfterInitialization | MyBeanPostProcessor.postProcessBeforeInitialization | MyBeanPostProcessor.postProcessAfterInitialization | MyBeanPostProcessor.postProcessBeforeInitialization | 后置处理对Spring工厂创建的 MyBeanPostProcessor.postProcessAfterInitialization | 所有对象而非特定对象做加工 MyBeanPostProcessor.postProcessBeforeInitialization | MyBeanPostProcessor.postProcessAfterInitialization | MyBeanPostProcessor.postProcessBeforeInitialization | MyBeanPostProcessor.postProcessAfterInitialization | MyBeanPostProcessor.postProcessBeforeInitialization | MyBeanPostProcessor.postProcessAfterInitialization | MyBeanPostProcessor.postProcessBeforeInitialization | MyBeanPostProcessor.postProcessAfterInitialization / After ApplicationContext Before getBean Product.Product Product.setName MyBeanPostProcessor.postProcessBeforeInitialization - 在初始化前加工处理 Product.afterPropertiesSet - 接口中的初始化方法 Product.init - 自定义的初始化方法 MyBeanPostProcessor.postProcessAfterInitialization - 在初始化后加工处理 After getBean cn.tedu.injection.Product@20f5239f 例程:Injection 3 对不同类型的对象以不同方式加工 在实现加工处理的方法中对传入对象的类型做判断,执行有针对性的处理。 /src/main/java/cn/tedu/injection/MyBeanPostProcessor.java: public class MyBeanPostProcessor implements BeanPostProcessor { private Logger logger = Logger.getLogger(MyBeanPostProcessor.class); @Override public Object postProcessBeforeInitialization( Object bean, String beanName) throws BeansException { logger.debug("MyBeanPostProcessor.postProcessBeforeInitialization"); if (bean instanceof Product) ((Product)bean).setName("computer"); return bean; } @Override public Object postProcessAfterInitialization( Object bean, String beanName) throws BeansException { logger.debug("MyBeanPostProcessor.postProcessAfterInitialization"); if (bean instanceof Product) ((Product)bean).setName("tablet"); return bean; } } 例程:Injection