Spring AOP 中提供了两种PointcutAdvisor,分别是:
①org.springframework.aop.support.RegexpMethodPointcutAdvisor (需要加上完整类名,可以用Spring提供的匹配方式)
②org.springframework.aop.support.NameMatchMethodPointcutAdvisor(只需要方法名,不用加类名)
下面看看使用第一种方式实现AOP的例子:
1.配置文件:
<bean id="interceptorAdvisor"
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<!-- 业务实现方法名匹配 -->
<property name="patterns">
<list>
<value>com.a.dispatch</value>
<value>com.b.service</value>
<value>com.apache.xxx.dal.*DAO.*</value>
</list>
</property>
<property name="advice">
<ref bean="interceptorAdvice" />
</property>
</bean>2.配置自己实现的advice: <bean id="interceptorAdvice"
class="com.yourImpl">
<property name="threshold">
<map>
<entry key="keyxxx" value="valuexxx"/>
</map>
</property>
</bean>3.实现MethodInterceptor的invoke方法,真正执行的方法前后做相关工作,比如日志记录,数据监控等4.添加
DefaultAdvisorAutoProxyCreator的配置:DefaultAdvisorAutoProxyCreator这个类功能更为强大,这个类的奇妙之处是他实现了BeanProcessor接口,当ApplicationContext读如所有的Bean配置信息后,这个类将扫描上下文,寻找所有的Advistor(一个Advisor是一个切入点和一个通知的组成),将这些Advisor应用到所有符合切入点的Bean中。
<bean id="autoProxyCreator"
class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
<property name="proxyTargetClass" value="true"/>
</bean>
附上spring ioc和aop精髓图:



本文介绍 Spring AOP 中两种 PointcutAdvisor 的使用方法,并通过具体示例展示了如何配置 RegexpMethodPointcutAdvisor 来实现切面逻辑。同时,还讲解了 DefaultAdvisorAutoProxyCreator 在 AOP 中的作用。
535

被折叠的 条评论
为什么被折叠?



