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:归还【充电宝】"); } }