理论
Advice通知
Advice 定义在连接点做什么,为切面增强提供织入接口。在Spring AOP中,他主要描述Spring AOP围绕方法调用而注入的切面行为。如BeforeAdvice, afterAdvice, ThrowsAdvice等。
Pointcut切点
Pointcut 决定Advice通知应该作用于哪个连接点,也就是说通过Pointcut来定义需要增强的方法的集合,这些集合的选取可以按照一定的规则来完成。在这种情况下,Pointcut通常意味着标识方法,例如,这些需要增强的地方可以由某个正则表达式进行标识,或根据某个方法名进行匹配等。
Advisor通知器
完成对目标方法的切面增强设计(Advice) 和关注点的设计(Pointcut)以后,需要一个对象把他们结合起来,完成这个作用的就是Advisor通知器。
配置详情
ProxyFactoryBean
- proxyInterfaces:代理类应该实现的接口。
- interceptorNames:需要应用到目标对象上的通知Bean的名字.可以是拦截器,advisor和其他通知类型的名字。
- target:代理的目标类。
<bean class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces" value="spring.aop.ITest"></property>
<property name="interceptorNames" >
<list>
<value>loggerAdvice</value>
</list>
</property>
<property name="target" ref="testproxyfactorybean"></property>
</bean>
BeanNameAutoProxyCreator
- interceptorNames:需要应用到目标对象上的通知Bean的名字.可以是拦截器,advisor和其他通知类型的名字。这个属性必须按照在BeanFactory中的顺序设置。
- beanNames:需要代理的bean的列表
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="interceptorNames">
<list>
<value>loggerAdvice</value>
</list>
</property>
<property name="beanNames">
<list>
<idref local="testproxyfactorybean" />
</list>
</property>
</bean>