Spring AOP-顾问-方法名匹配切入点顾问
因为通知给目标对象的所有方法都切入,而实际应用往往是需要对指定方法进行增强,这就需要用到顾问来实现。
在通知的基础之上修改配置文件即可
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean name = "someService" class="com.hk.spring.aop08.SomeServiceImpl"></bean>
<!-- 注册通知 Advice-->
<bean name = "myAfterReturningAdvice" class="com.hk.spring.aop08.MyAfterReturningAdvice"></bean>
<!-- 注册顾问 Advisor-->
<bean name = "myAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
<property name="advice" ref="myAfterReturningAdvice"></property>
<!-- 指定切入点 -->
<property name="mappedName" value="doFirst"></property>
<!-- 指定多个切入点
<property name="mappedNames" value="doFirst,doSecond"></property>
-->
</bean>
<!-- 生成代理对象 -->
<bean name = "serviceProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<!-- 配置代理对象的目标对象属性 (类加载器)-->
<property name="target" ref="someService"/>
<!-- 或者这样配置
<property name="targetName" value="someService"/>
-->
<!-- 配置顾问 (指定方法)-->
<property name="interceptorNames" value="myAdvisor"/>
<!-- 接口通过private boolean autodetectInterfaces = true可以被找到 -->
</bean>
</beans>
配置多个切入点还可以这样
<!-- 指定切入点
<property name="mappedName" value="doFirst"></property>
-->
<!-- 指定多个切入点 -->
<property name="mappedNames" value="doFirst,doSecond"></property>
<!-- 采用通配符形式 -->
<property name="mappedNames" value="do*"></property>
<property name="mappedNames" value="*o*"></property>