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

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

  • 相关阅读:
    html表单应用
    html表格框架标签 frame标签
    html表单的应用table标签
    html常用标签 锚点标签 a标签
    1ubuntu安装虚拟机
    java 环境的安装、设置免密登陆、进行hadoop安装、关闭防火墙
    ssh 端口更改或ssh 远程接不上的问题(尤其是国外服务器)
    memcached命令行、Memcached数据导出和导入、php连接memcache、php的session存储到memcached
    08-列表的常用操作-复制与遍历
    07-列表的常用操作-修改和删除
  • 原文地址:https://www.cnblogs.com/ccw95/p/6128946.html
Copyright © 2011-2022 走看看