美文网首页
AOP(1)介绍&分类

AOP(1)介绍&分类

作者: 远o_O | 来源:发表于2017-07-23 14:49 被阅读16次

一、有了OOP,为什么还需要AOP?

  • 我们在精熟了OOP的方方面面,包括什么设计模式。但是我们还是无法解决某些问题。
  • 对于系统中普通的业务关注点,OOP可以很好地对其进行分解并使之模块化,但却无法更好地避免类似于系统需求地实现在系统中各处散落这样地问题。(安全检查、系统日志、事务管理)

二、AOP的尴尬?

  • AOP现在没有主权,所以,现时代的AOP实现都需要“寄生”于OOP的主权领土中。

三、静态AOP

  • 以AspectJ为例:相应的横切关注点以Aspect形式实现之后,会通过特定的编译器,将实现后的Aspect编译并织入到系统的静态类中。
  • 优点:Aspect直接以java字节码的形式编译到java类中,jvm可以像通常一样加载java类运行,几乎没有性能损失。
  • 缺点:不够灵活,一旦需要修改,就需要重新编译,重新织入。

四、动态AOP

  • 动态代理:可以在运行期间,为相应的接口动态生成对应的代理对象。
  • 缺点:所有需要织入横切关注点逻辑的模块类都得实现相应得接口,因为动态代理机制只针对接口有效。Spring默认采用这种机制。
  • 优点:相比于动态字节码增强,性能由一定得优势,因为这是通过JVM做的,性能差不多是1.5倍
  • 动态字节码增强:在运行期间,通过动态字节码增强技术为这些系统模块类生成相应的子类,而将横切逻辑加到这些子类中,让应用程序在执行期间使用的是这些动态生成的子类,从而达到将横切逻辑织入系统的目的。
  • 优点:目标类不再不需要实现相应的接口,摆脱了接口,spring在动态代理不能用的时候,采用cglib。

五、自定义类加载器

  • 在class文件加载期间,将横切逻辑,进行织入,然后进行偷梁换柱。。。

相关文章

  • AOP(1)介绍&分类

    一、有了OOP,为什么还需要AOP? 我们在精熟了OOP的方方面面,包括什么设计模式。但是我们还是无法解决某些问题...

  • 重拾Java EE——Spring(2)高阶

    1 AOP 1.1 AOP介绍 1.1.1 什么是AOP 在软件业,AOP为Aspect Oriented ...

  • AOP概念学习

    一.AOP介绍 1.官方介绍:面向切面编程(AOP,Aspect Oriented Programming),通过...

  • AMP是如何提升性能?

    AMP简介 Google推出移动网页加速项目AMPAMP介绍 AMP是如何提升性能? 以下的优化点是AMP页面能被...

  • Spring笔记03_AOP

    1. AOP 1.1 AOP介绍 1.1.1 什么是AOP 在软件业,AOP为Aspect Oriented Pr...

  • Spring AOP

     这节介绍Spring AOP。关于Spring AOP的名字就不多做介绍了,网上有很多对AOP的解释。 1. 概...

  • Spring AOP介绍(一)之 Spring AOP 基础介绍

    Spring AOP介绍(一)之 Spring AOP 基础介绍 AOP是什么? AOP(Aspect Orien...

  • Spring AOP的一点总结

    1. Spring AOP介绍 AOP(Aspect-Oriented Programming),面向切面的编程,...

  • Spring-AOP

    一.AOP介绍 1.简介 AOP : (Aspect Oriented Programming) 面向切面编程注 ...

  • 31--基于@AspectJ的AOP

    上一节介绍了基于Schema的AOP,本篇介绍基于@AspectJ的AOP。 1.@AspectJ切面 目标对象 ...

网友评论

      本文标题:AOP(1)介绍&分类

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