zoukankan      html  css  js  c++  java
  • Spring AOP 的相关概念

    1.1AOP 概述
    AOP:全称是 Aspect Oriented Programming 即:面向切面编程。
    简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的
    基础上,对我们的已有方法进行增强。
    1.1.2 AOP 的作用及优势
    作用:
    在程序运行期间,不修改源码对已有方法进行增强。
    优势:
    减少重复代码
    提高开发效率
    维护方便
    1.1.3 AOP 的实现方式
    使用动态代理技术
     
    动态代理
    动态代理的特点
    字节码随用随创建,随用随加载。
    它与静态代理的区别也在于此。因为静态代理是字节码一上来就创建好,并完成加载。
    装饰者模式就是静态代理的一种体现。
     
    动态代理常用的有两种方式
    基于接口的动态代理
    提供者:JDK 官方的 Proxy 类。
    要求:被代理类最少实现一个接口。
    基于子类的动态代理
    提供者:第三方的 CGLib,如果报 asmxxxx 异常,需要导入 asm.jar。
    要求:被代理类不能用 final 修饰的类(最终类)。
    Spring 中的 AOP
     
    2.1Spring 中 AOP 的细节
    2.1.1 说明
    我们学习 spring 的 aop,就是通过配置的方式,实现上一章节的功能。
    2.1.2 AOP 相关术语
    Joinpoint(连接点):
    所谓连接点是指那些被拦截到的点。在 spring 中,这些点指的是方法,因为 spring 只支持方法类型的
    连接点。
    Pointcut(切入点):
    所谓切入点是指我们要对哪些 Joinpoint 进行拦截的定义。
    Advice(通知/增强):
    所谓通知是指拦截到 Joinpoint 之后所要做的事情就是通知。
    通知的类型:前置通知,后置通知,异常通知,最终通知,环绕通知。
    Introduction(引介):
    引介是一种特殊的通知在不修改类代码的前提下, Introduction 可以在运行期为类动态地添加一些方
    法或 Field。
    Target(目标对象):
    代理的目标对象。
    Weaving(织入):
    是指把增强应用到目标对象来创建新的代理对象的过程。
    spring 采用动态代理织入,而 AspectJ 采用编译期织入和类装载期织入。
    Proxy(代理):
    一个类被 AOP 织入增强后,就产生一个结果代理类。
    Aspect(切面):
    是切入点和通知(引介)的结合。
    2.1.3 学习 spring 中的 AOP 要明确的事
    a、开发阶段(我们做的)
    编写核心业务代码(开发主线):大部分程序员来做,要求熟悉业务需求。
    把公用代码抽取出来,制作成通知。(开发阶段最后再做):AOP 编程人员来做。
    在配置文件中,声明切入点与通知间的关系,即切面。:AOP 编程人员来做。
    b、运行阶段(Spring 框架完成的)
    Spring 框架监控切入点方法的执行。一旦监控到切入点方法被运行,使用代理机制,动态创建目标对
    象的代理对象,根据通知类别,在代理对象的对应位置,将通知对应的功能织入,完成完整的代码逻辑运行。
    2.1.4 关于代理的选择
    在 spring 中,框架会根据目标类是否实现了接口来决定采用哪种动态代理的方式。
     
     

     

  • 相关阅读:
    HDU 1495 非常可乐
    ja
    Codeforces Good Bye 2016 E. New Year and Old Subsequence
    The 2019 Asia Nanchang First Round Online Programming Contest
    Educational Codeforces Round 72 (Rated for Div. 2)
    Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises)
    AtCoder Regular Contest 102
    AtCoder Regular Contest 103
    POJ1741 Tree(点分治)
    洛谷P2634 [国家集训队]聪聪可可(点分治)
  • 原文地址:https://www.cnblogs.com/yangzhixue/p/11803885.html
Copyright © 2011-2022 走看看