• 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>
    //--------------------------------------------------------------------------------------------------------

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

  • 相关阅读:
    Goahead 3.1.0 发布,嵌入式 Web 服务器
    jdao 1.0.2 发布,轻量级的orm工具包
    pythonbitstring 3.1.0 发布
    JavaScript 搜索引擎 lunr.js
    Difeye 1.1.4 版本发布
    Chronon 3.5 发布,支持 Java 7
    性能扩展的那些事儿:一味增加硬件并不能解决响应时间问题
    Eclipse SDK 4.2.2/Equinox 3.8.2 发布
    Linux Kernel 3.8.1 发布
    Armadillo C++ Library 3.800 发布
  • 原文地址:https://www.cnblogs.com/ccw95/p/6128946.html
Copyright © 2020-2023  润新知