描述
LoadTimeWeaverAwareProcessor实现BeanPostProcessor方法,那么对于BeanPostProcessor接口来讲,postProcessBeforeInitialization与postProcessAfterInitialization有着其特殊意义,也就是说在所有bean的实例化前后都会分别调用对应的方法,那么在LoadTimeWeaverAwareProcessor中的postProcessBeforeInitialization函数中完成了什么样的逻辑呢?
public class LoadTimeWeaverAwareProcessor implements BeanPostProcessor, BeanFactoryAware {
//主要是针对LoadTimeWeaverAware类型bean处理,往bean里面设置loadTimeWeaver
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof LoadTimeWeaverAware) {
LoadTimeWeaver ltw = this.loadTimeWeaver;
if (ltw == null) {
ltw = this.beanFactory.getBean(ConfigurableApplicationContext.LOAD_TIME_WEAVER_BEAN_NAME, LoadTimeWeaver.class);
}
((LoadTimeWeaverAware) bean).setLoadTimeWeaver(ltw);
}
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String name) {
return bean;
}
}
LoadTimeWeaver简称LTW和AOP代理有关,只不过这个代理方式和JDK动态代理、Cglib代理不一样,都是代理的实现方式的一种
在spring中实现LoadTimeWeaver接口类有很多,关于LoadTimeWeaver的介绍请看:https://www.cnblogs.com/takumicx/p/10150344.html