美文网首页
Spring-AOP

Spring-AOP

作者: zhanglbjames | 来源:发表于2017-06-20 15:24 被阅读0次

    AOP的概念

    面向切面的编程,切面用于描述分散在对象、类或者函数中的横向关注点,通过分离这些关注点,把解决特定领域问题的代码从业务逻辑中独立出来,他们之间的关系通过切面来维护。效果是保证程序员在不修改源代码的情况下,为系统中业务组件的多个业务方法添加某种通用功能。

    组成:

    • 切面:要实现的功能,是系统模块化的一个切面或领域。如调用时间。
    • 通知:切面的实际实现,他通知系统新的行为。通知在连接点插入到系统中。
    • 连接点:应用程序执行过程中插入切面的地点。连接点如下


    • 切入点:定义了通知应该应用在哪些连接点上,通知可以应用在aop框架支持的任何连接点。可以这样理解,切入点就是当通知插入到某个连接点时,这个连接点就成了切入点。
    • 引入:为类添加新方法和属性
    • 目标对象:被通知的对象,既可以是被通知的类,也可以是第三方类。
    • 代理:将通知应用到目标对象之后创建的对象,应用系统的其他部分不用为了支持代理对象而改变。
    • 织入:将切面应用到目标对象从而创建的一个新的对象的过程,织入发生在目标对象生命周期的多个点上。

    AOP实现原理

    分为静态实现和动态实现,动态实现要比动态实现效率高,因为一个动态代理能代理多个实现了指定接口的对象(目标对象),而静态代理,需要为每一个目标对象都写一个代理类,重复代码。

    1.静态实现,在编译阶段对程序进行修改,生成代理类,AspectJ
    2.动态实现,运行阶段动态生成,在Spring AOP中有两种代理方式,JDK动态代理和CGLIB代理。默认情况下,目标对象实现了接口时,则采用JDK动态代理其接口,反之,采用CGLIB代理。

    JDK动态代理示例



    AOP的使用示例

    示例


    execution用来匹配方法


    参考链接
    其他切入点表达式http://blog.csdn.net/wangpeng047/article/details/8556800

    相关文章

      网友评论

          本文标题:Spring-AOP

          本文链接:https://www.haomeiwen.com/subject/srtbfxtx.html