当系统比较复杂,或者中需要进行aop进行织入的bean较多时,简单采用ProxyFacotryBean无疑会增加很多工作量,同时由于要从ProxyFactoryBean获得代理对象,也会使应用和Spring之间的耦合度增加,并且很多时候可维护性不强,譬如,我们需要给bean名字满足“*service”的bean每个方法增加事务功能,如果采用ProxyFacotryBean必须为每个以service结尾的bean增加一个配置。当然,如果愿意当然可以重复copy-past可以满足,若以后又有人增加了一个bean:Abcservice,这时若他忘记增加对应的ProxyFacotyBean配置,可能导致灾难性的后果。这样的情况下,自动代理的方式就能发挥它巨大的优势了。
1. 使用举例
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames"><value>*service</value></property>
<property name="interceptorNames">
<list>
<value>myInterceptor</value>
</list>
</property>
</bean>
通过配置beanNames属性,beanName是以service结尾时将会织入myInterceptor中指定的横切逻辑。
2. 类结构图
![](https://img-my.csdn.net/uploads/201303/04/1362374823_4701.png)