Spring 提供了自动代理机制,可以让容器自动生成代理,从而把开发人员从繁琐的配置中解脱出来 。 具体是使用 BeanPostProcessor 来实现这项功能。

1 BeanPostProcessor
BeanPostProcessor 代理创建器的实现类可以分为 3 类:
| 类型 | 实现类 |
|---|---|
| 基于 Bean 配置名规则 | BeanNameAutoProxyCreator |
| 基于 Advisor 匹配规则 | DefaultAdvisorAutoProxyCreator |
| 基于 Bean 中的 AspectJ 注解标签的匹配规则 | AnnotationAwareAspectJAutoProxyCreator |
所有的自动代理器类都实现了 BeanPostPorcessor ,在容器实例化 Bean 时, BeanPostProcessor 将对它进行加工处理,所以自动代理创建器能够对满足匹配规则的 bean 自动创建代理对象。
2 BeanNameAutoProxyCreator
假设有以下两个实体类(用户与充电宝)。
用户类:
public class User {
public void rent(String userId) {
System.out.println("User:租赁【充电宝】");
}
public void back(String userId){
System.out.println("User:归还【充电宝】");
}
}