zoukankan      html  css  js  c++  java
  • Spring学习笔记:使用Pointcut 和Advisor实现AOP

    基础知识

    在 Spring AOP 中,有 3 个常用的概念,Advices 、 Pointcut 、 Advisor ,解释如下:

    • Advices :表示一个 method 执行前或执行后的动作。
    • Pointcut :表示根据 method 的名字或者正则表达式去拦截一个 method 。
    • Advisor : Advice 和 Pointcut 组成的独立的单元,并且能够传给 proxy factory 对象。

    用xml配置Pointcut

    <bean id="Pointcut的Id" class="org.springframework.aop.support.NameMatchMethodPoint">
        <property name="mappedName" vlaue="方法名"/>
    </bean>

    用xml配置Advisor,将pointcut与advice关联起来

    <bean id="Advisor的Id" class="org.springframework.aop.support.DefaultPointcutAdvisor">
        <property name="pointcut" ref="要关联的Pointcut"/>
        <property name="advice" ref="要关联的Advice"/>
    </bean>

    用xml配置代理类

    <bean id="生成的代理的Id" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="target" ref="要代理的类(即需要劫持的类)"/>
        <property>
            <list>
                <value>Advisor的Id</value>
            </list>
        </property>
    </bean>

    不单独配置Pointcut,在配置Advisors时class选择NameMatchMethodPointcutAdvisor

    <bean id="Advisor的Id" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
        <property name="mappedName"  value="方法名"/>
        <property name="advice" ref="要关联的Advice" />
    </bean>
    

    创建使用正则表达式匹配要拦截的method的切点

    在class中选择org.springframework.aop.support.RegexpMethodPointcutAdvisor

    <bean id="Advisor名" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
        <property name="patterns">
            <list>
                <value>.*URL.*</value>
            </list>
        </property>
        <property name="advice" ref=""/>
    </bean>
  • 相关阅读:
    Linux IO接口 监控 (iostat)
    linux 防火墙 命令
    _CommandPtr 添加参数 0xC0000005: Access violation writing location 0xcccccccc 错误
    Visual Studio自动关闭
    Linux vsftpd 安装 配置
    linux 挂载外部存储设备 (mount)
    myeclipse 9.0 激活 for win7 redhat mac 亲测
    英文操作系统 Myeclipse Console 乱码问题
    Linux 基本操作命令
    linux 查看系统相关 命令
  • 原文地址:https://www.cnblogs.com/infoflow/p/8975283.html
Copyright © 2011-2022 走看看