AOP

1、 AOP核心概念

  1、Aspect(切面)

  切面,是对交叉业务逻辑的统称。

  2、Joinpoint(连接点)

  连接点,指切面可以织入到目标对象的位置(方法,属性等)。

  3、Advice(通知)

  通知,指切面的具体实现。

  4、Pointcut(切入点)

  切入点,指通知应用到哪些类的哪些方法或属性之上的规则。

  5、Introduction(引入)

  引入,指动态地给一个对象增加方法或属性的一种特殊的通知。

  6、Weaving(织入)

  织入,指将通知插入到目标对象。

  7、Target(目标对象)

  目标对象,指需要织入切面的对象。

  8、Proxy(代理对象)

  代理对象,指切面织入目标对象之后形成的对象。

2、什么是AOP(Aspect-oriented programming面向方面编程)

面向方面编程也叫面向切面编程,即AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。

AOP和IOC是补充性的技术,它们都是运用模块化方式解决企业应用程序开发中的复杂问题。在典型的面向对象的开发方式中,可能要将日志记录语句放在所有方法和Java类中才能实现日志功能。在AOP方式中,,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要的日志组件上。当然,优势就是Java类不需要知道日志服务的存在,也不需要知道日志服务的存在,也不需要考虑相关的代码。所以,用Spring  AOP编写的应用程序代码是松散耦合的。

AOP的功能完全集成到了Spring 事务管理、日志和其他各种特性的上下文中。

3、Spring AOP原理

  Spring采用JDK动态代理模式来实现AOP机制。

  Spring AOP采用动态代理的过程:

(1) 将切面使用动态代理的方式动态织入到目标对象(被代理类),形成一个代理对象;

(2) 目标对象如果没有实现代理接口,那么Spring会采用CGLib来生成代理对象,该代理对象是目标对象的子类;

(3) 目标对象如果是final类,并且也没实现代理接口,就不能运用AOP。

猜你喜欢

转载自www.cnblogs.com/Mr-Gim/p/8858271.html
AOP