Spring——AOP(定义切入点和顾问)

★★★★★★★★★★★★★★★ 定义切入点与顾问 ★★★★★★★★★★★★★★★

//-----------------------------------静态方式一 : NameMatchMethodPointcut---------------------------------------------------

<!-- 静态方式一:(NameMatchMethodPointcut): 切入点(pointcut),匹配方法名称 -->
<bean id="nameMatchMethodPointcut" class="org.springframework.aop.support.NameMatchMethodPointcut">
<property name="mappedNames">
<list>
<value>update*</value><!-- 匹配所有方法名以update开始的方法 -->
<value>insert*</value><!-- 匹配所有方法名以insert开始的方法 -->
</list>
</property>
</bean>

<!-- 顾问(advisor):通知(advice)+ 切入点(pointcut)的组合 -->
<bean id="pointcutAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="pointcut" ref="nameMatchMethodPointcut"></property>
<property name="advice" ref="logBeforeAdvice"></property>
</bean>
//--------------------------------------------------------------------------------------------------------
//-----------------------------------静态方式二(针对方式一的整合) : NameMatchMethodPointcutAdvisor---------------------------------------------------

<!-- 顾问(NameMatchMethodPointcutAdvisor):通知 (advice)+切入点(pointcut) -->
<bean id="pointcutAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
<property name="advice" ref="logBeforeAdvice"></property>
<property name="mappedNames">
<list>
<value>update*</value><!-- 匹配所有方法名以update开始的方法 -->
<value>insert*</value><!-- 匹配所有方法名以insert开始的方法 -->
</list>
</property>
</bean>
//--------------------------------------------------------------------------------------------------------
//-----------------------------------静态方式三 : RegexpMethodPointcutAdvisor---------------------------------------------------

<!-- 顾问(RegexpMethodPointcutAdvisor):通知(advice)+ 切入点(pointcut)的组合 -->
<bean id="pointcutAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice" ref="logBeforeAdvice"></property>
<!--
. 匹配任意单个字符
+ 匹配前一个字符,可出现1次或多次
* 匹配前一个字符,可出现0次或多次
\ 转义
-->
<property name="pattern">
<value>aop\.IUserDao\.update.*</value><!-- 匹配updateXXX方法 -->
</property>
</bean>
//--------------------------------------------------------------------------------------------------------
//-----------------------------------动态方式四 : ControlFlowPointcut---------------------------------------------------

★★★★★ 注意: 需先定义类aop.Some ★★★★★

<!--
动态(NameMatchMethodPointcut): 切入点(pointcut),匹配方法名称

当代理对象在指定类aop.Some中调用实际对象userDao中的方法时,被调用方法才会使用指定的logBeforeAdvice通知
-->
<bean id="controlFlowPointcut" class="org.springframework.aop.support.ControlFlowPointcut">
<constructor-arg>
<value>aop.Some</value>
</constructor-arg>
</bean>

<!-- 顾问(advisor):通知(advice)+ 切入点(pointcut)的组合 -->
<bean id="pointcutAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="pointcut" ref="controlFlowPointcut"></property>
<property name="advice" ref="logBeforeAdvice"></property>
</bean>
//--------------------------------------------------------------------------------------------------------

 

注意:最后在代理工厂中添加顾问

posted @ 2016-12-03 16:05  龙之天族  阅读(500)  评论(0编辑  收藏  举报