1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| public class MyBeanPostProcessor implements InstantiationAwareBeanPostProcessor, DestructionAwareBeanPostProcessor { public static final Logger log = LoggerFactory.getLogger(MyBeanPostProcessor.class); @Override public void postProcessBeforeDestruction(Object o, String s) throws BeansException { if (s.equals("lifeCycleBean")) log.info("<<<<<<<<< 销毁之前执行, 例如@PreDestroy"); }
@Override public Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException { if (beanName.equals("lifeCycleBean")) log.info("<<<<<<<<< 实例化之前执行, 这里返回的对象会替换原本的bean"); return null; }
@Override public boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException { if (beanName.equals("lifeCycleBean")) log.info("<<<<<<<<< 实例化之后执行, 这里如果返回false会跳过依赖注入阶段"); return true; }
@Override public PropertyValues postProcessProperties(PropertyValues pvs, Object bean, String beanName) throws BeansException { if (beanName.equals("lifeCycleBean")) log.info("<<<<<<<<< 依赖注入阶段执行, 例如@Autowired, @Value, @Resource"); return pvs; }
@Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { if (beanName.equals("lifeCycleBean")) log.info("<<<<<<<<< 初始化之前执行, 这里返回的对象会替换掉原本的bean, 如@PostConstruct, @ConfigurationProperties"); return bean; }
@Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (beanName.equals("lifeCycleBean")) log.info("<<<<<<<<< 实例化之后执行, 这里返回的对象会替换掉原本的bean, 如代理增强"); return bean; } }
|