Spring新手学习笔记(二)后处理器与AOP 1048693.shtml

Spring新手学习笔记(二)后处理器与AOP_Java_第七城市

1.后处理器


后处理器是对IOC容器功能的扩展。按我的理解,扩展的原理是在某动作结束后再次调用指定的方法进行扩展处理。有点类似于AOP。


后处理器分两种:Bean后处理器容器后处理器

1.1 Bean后处理器


Bean后处理器会在Bean实例化结束后(注意,该实例化应该是指Bean类的实例化,还没有进行Spring中的注入等操作,并不是Spring最终返回的Bean),对其进行近一步的增强处理,例如返回一个Bean的代理类。


Bean后处理器需要实现BeanPostProcessor接口,该接口包含的postProcessBeforeInitializationpostProcessAfterInitialization分别在Bean初始化之前和之后回调。如上图,增强处理与init-methodInitializingBeandestory-methodDisposableBean的执行顺序,增强处理永远在最外围的


下面给出Bean后处理器的Demo:

首先实现创建一个实现 BeanPostProcessor的后处理器类
/**
* Bean后处理器Demo类,该处理类会对容器里面的所有Bean进行后处理
* @author wangsz
*/

public class BeanPostProc implements BeanPostProcessor{
/**
* 在Bean初始化后,对容器中的bean进行后处理,返回处理后的bean
*/

public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("bean后处理器在["+beanName+"]初始化后对其进行增强处理");
if(bean instanceof Person){
((Person) bean).setName("akq");
}
//该bean可以与旧bean截然不同,如返回一个该Bean的代理类
return bean;
}
/**
* 在Bean初始化前,对容器中的bean进行后处理,返回处理后的bean
*/

public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("bean后处理器在["+beanName+"]初始化前对其进行增强处理");
//该bean可以与旧bean截然不同
return bean;
}
}
然后在Spring配置文件中加上这个Bean。这样,该后处理类就会对容器里面的所有Bean进行后处理。

猜你喜欢

转载自blog.csdn.net/sinat_35172724/article/details/78783426