zoukankan      html  css  js  c++  java
  • 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>
    //--------------------------------------------------------------------------------------------------------

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

  • 相关阅读:
    jQuery动画速成
    elementui更改导航栏样式
    Python反射
    Linux基础--基本命令
    Linux基础--简介
    DRF
    Socket与Websocket初识
    五星宏辉游戏项目小结
    Redis详解(8)--redis-cluster
    Redis详解(7)--主从复制
  • 原文地址:https://www.cnblogs.com/ccw95/p/6128946.html
Copyright © 2011-2022 走看看