0%

SPRING18–顾问ADVISOR

顾问是spring提供的另一种切面,其可以完成更为负载的切面织入功能。
pointAdvisor是顾问的一种,可以指定具体的切入点。顾问将通知进行包装,会根据不同的通知类型,在不同的时间点,将切面织入不同的切入点。
pointAdvisor接口有两个常用的实现类:
1.名称匹配方法切入点顾问 NameMatchMethodPointcutAdvisor
2.正则表达式方法切入点顾问

列子1:
1.名称匹配方法切入点顾问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!– 注册目标对象 –>
<bean id=“ISomeService” class=“com.bean.service5.someServiceImpl”></bean>
<!– 注册切面:通知 –>
<bean id=“myadvice” class=“com.bean.service5.mymethodBeforeAdvice”/>
<!– 注册切面:顾问 –>
<bean id=“myAdvisor” class=“org.springframework.aop.support.NameMatchMethodPointcutAdvisor”>
<property name=“advice” ref=“myadvice”></property>
<property name=“mappedNames” value=“*ir*===方法的名字”></property>
</bean>
<!– 生成代理对象 –>
<bean id=“serviceProxy” class=“org.springframework.aop.framework.ProxyFactoryBean”>
<!– 指定目标对象 –>
<property name=“target” ref=“ISomeService”></property>
<!– 指定切面–>
<property name=“interceptorNames” value=“myAdvisor”></property>
</bean>

2结果:可以随意的指定切面通知

例子2:
正则表达式方法切入点顾问

1
2
3
4
5
<bean id=“myAdvisor” class=“org.springframework.aop.support.RegexpMethodPointcutAdvisor“>
<property name=“advice” ref=“myadvice”></property>
<!– 这里的正则表达式匹配的对象是全限定方法名 –>
<property name=“pattern” value=“.*doFirst”></property>
</bean>