首页 > 其他 > 详细

AOP初步

时间:2019-12-20 13:48:15      阅读:71      评论:0      收藏:0      [点我收藏+]

一刀切的AOP基础

软件开发的目的,最终是为了解决各种需求,包括业务和系统的,使用OOP可以对业务需求等普通关注点进行很好的抽象和封装,并且使之模块化。
但OOP却无法解决类似于日志、安全、事务等系统需求的实现在系统中各处散落的问题。
技术分享图片

AOP是一种理念,需要一种现实的方式,将实现AOP理念的语言为AOL(Aspect-Oriented Language),可以与业务系统实现语言相同,比如Java,也可以不同,比如AspectJ是扩展自Java的一种AOL
技术分享图片

Weave(织入)过程

“飞架”AOP和OOP的桥,在Spring中是一组类来完成,ProxyFactory
囿于现实中AOP技术实现上的尴尬,AOL实现的AOP各个概念实体,最终都需要某种方式集成到系统实现语言所实现的OOP实体组件中。

  • 静态AOP时代
    通过特定的编译器,将实现后的Aspect编译并织入到系统的静态类中。无性能损失但不够灵活
  • 动态AOP时代
    AOP各种概念实体都是普通的Java类,在系统运行开始后才织入,而不是预先编译到系统类中。

Java 平台上的AOP实现机制

  • 动态代理
    通过JDK 1.3引入的动态代理机制,为相应的接口动态生成对应的代理对象,SPring AOP默认情况下采用这种机制。
  • 动态字节码增强
    使用ASM或者CGLIB等Java工具库,在程序运行期间,动态构建节节码的class文件,只要满足Java虚拟机加载的class规范就行。无需接口
  • Java代码生成
    比较古老,已退休
  • 自定义类加载器
    所有的Java程序的clas都要通过相应的类加载器加载到Java虚拟机之后才能运行。功能比之前几种方式强大,但加重类加载器本身的负担
  • AOL扩展
    最强大,最难掌握。

AOP 基础概念

  • Jointpoint
    织入操作系统的执行点,基本上,程序执行过程中的执行点都可以作为Joinpoint。
    技术分享图片
    技术分享图片

  • Pointcut
    Pointcut概念代表的是Joint的表述方式,使用自然语言声明一个Pointcut,该Pointcut指定了系统中符合条件的一组Joinpoint。
  • Advice
    单一横切关注点逻辑的载体。类比:
    Aspect --> Class
    Advice --> Method
  • Aspect
    对系统中的横切关注点逻辑进行模块化封装的AOP概念实现,通常 包含多个Pointcut和相关Advice定义
    技术分享图片

  • 概念图
    技术分享图片

AOP初步

原文:https://www.cnblogs.com/yeni/p/12072290.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!