一般情况下的代理针对每一个对象的只能增强都需要新建一个bean标签,当有很多类的时候就显得比较繁琐,这时Spring为我们提供了自动代理
情况1:BeanNameAutoProxyCreator 根据Bean的名称来创建代理
配置:修改一般情况下的代理类ProxyFactoryBean为BeanNameAutoProxyCreator
<bean name="heloService" class="demo6.HelloService"></bean>
<bean name="helloAdvice" class="demo6.HelloAdvice"></bean>
<bean
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames" value="*Service"></property>
<property name="interceptorNames" value="helloAdvice"></property>
</bean>
注意:该方法的原理是后处理Bean来实现的,因此不必配置name属性,直接使用heloService就可以
情况2:根据Advisor本身包含的信息创建代理
<bean name="helloService" class="demo6.HelloService"></bean>
<bean name="helloAdvice" class="demo6.HelloAdvice"></bean>
<bean name="regexAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice" ref="helloAdvice"></property>
<property name="patterns" value=".*add.*"></property>
</bean>
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"></bean>