• java# 认识spring# 认识spring 切面编程aop


    ## what is apo

    - aop 全称(Aspect Oriented Programming)的缩写。意味切面编程。

    - 作用:在不改变目标类代码的情况下,通过AOP技术增强目标类的功能。通过【预编译】和【运行期动态代理】实现程序功能的统一维护的一种技术。

    -目的:利用AOP可以将系统中的业务逻辑与系统逻辑进行隔离,从而使得业务逻辑与系统逻辑之间得耦合度降低,大大提高程序的可重用性,同事提高了开发的效率。

    ## aop 相关术语

    - Joinpoint(连接点):所谓连接点,指的是被拦截的点。在spring指的是方法,因为在spring中只支持方法类型的连接点。

    - pointcut(切入点):所谓切入点,是指我们需要对哪些Joinpoint进行拦截的定义。

    - Advice(通知/增强):所谓通知是指拦截到joinpoint之后所做得的事情就是通知,通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)。

    - Introduction(引介): 引介是一种特殊的通知在不修改类的前提下。Introduction可以在运行期间为类动态的添加一些方法或field.

    - Target(目标对象):代理的目标对象。

    - weaving(织入):是指把增强应用到目标对象来创建新的代理对象的过程。

    - proxy(代理):一个类被aop织入增强后,就产生一个结果代理类。

    - aspect(切面):是切入点和通知的结合。

    - advisor(通知其,顾问):和Aspect很相似

    ## aop实现之aspectJ

    aspectj是java实现的一个AOP框架,它能够对java代码进行AOP编译(一般在编译器进行),让java代码具有aspectJ的AOP功能(当让需要特殊的编译器)。

    aspectj是采用的静态织入的方式,aspect主要采用的是编译时期织入,在这份期间使用aspectJ的ACJ编译器吧Aspect类编译成class字节码后,在java目标类编译时织入。即先编译aspect类再编译目标类。

    ## aop实现之spring aop

    Spring Aop 是通过动态代理技术实现的,而动态代理技术则基于反射技术。动态代理的技术实现有两种,一种给予接口的JDK动态代理,一种给予继承的CGLib动态代理。

    - JDK动态代理:目标对象必须实现接口,通过接口生成代理对象。完成增强

    - CGlib动态代理:目标对象不需要实现接口,底层是通过继承目标对象产生代理子对象。

    ## spring基于Aspect 的整合

    其实就是指的Spring+AspectJ整合,不过Spring已经将AspectJ收录到自身的框架中了,并且底层织入依然是采取的动态植入方式。

    #### 依赖

     #### 配置

    - 编写接口和实现类(目标对象),并将对象交给spring ioc管理

    -  编写切面:切面各种注解可参考:https://www.cnblogs.com/zhangxufeng/p/9160869.html

    如:定义通用切入点,环绕切入等。

  • 相关阅读:
    IfcDirection
    IfcPcurve
    IfcOffsetCurve3D
    IfcOffsetCurve2D
    IfcLine
    IfcEllipse
    IfcCircle
    IfcConic
    IfcTrimmedCurve
    QDockWidget设置为tab切换形式
  • 原文地址:https://www.cnblogs.com/xy-c/p/14327107.html
Copyright © 2020-2023  润新知