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>
  • 相关阅读:
    侃一侃WebSocket
    为什么我要用GoEasy替代WebSocket
    WebSocket负载均衡
    大道至简 知易行难 JAVA 完成WebSocket demo 用GoEasy实现Hello world
    大道至简 知易行难 C# 完成WebSocket demo 用GoEasy实现Hello world
    WebSocket跨域问题解决
    WebSocket原理
    WebSocket 和HTTP的区别及原理
    WebSocket与Socket、TCP、HTTP的关系和异同点
    WebSocket配置中会遇到的一些问题
  • 原文地址:https://www.cnblogs.com/infoflow/p/8975283.html
Copyright © 2011-2022 走看看