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.aop09.SomeServiceImpl"></bean>
<!-- 注册通知 Advice-->
<bean name = "myAfterReturningAdvice" class="com.hk.spring.aop09.MyAfterReturningAdvice"></bean>
<!-- 注册顾问 Advisor-->
<bean name = "myAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice" ref="myAfterReturningAdvice"></property>
<!-- 根据正则表达式指定切入点 -->
<property name="pattern" value=".*ir.*"/><!-- 匹配对象是全限定性方法名(包含包名、类名、接口名的那种) -->
</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 name="pattern" value=".*ir.*"/><!-- 匹配对象是全限定性方法名(包含包名、类名、接口名的那种) -->