AOP

Aop

什么是AOP

AOP是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术

AOP和OOP的区别

AOP(面向切面编程)和OOP(面向对象编程)

AOP:针对业务处理过程中的切面进行提取,它所面对的是处理过程中某个步骤或阶段,降低耦合度

OOP:针对业务处理过程中的实体类及其属性和行为进行抽象和封装为对象,并关注对象与对象之间的关系。

横切关注点

软件开发中,应用于多出的功能称为横切关注点

通常,横切关注点是与应用的业务逻辑隔离开的,可以使用DI(依赖注入)来帮助应用对象之间的解耦

 

AOP术语

连接点(jointpoint)

程序执行的某个特点位置,在AOP中仅支持方法的连接点,方法的调用前,调用后,方法抛出异常时这些程序点

切点(pointcut)

AOP需要定位特定的连接点,而定位连接点的方式称之为切点,连接点相当于数据,切点相当于查询语句

增强(advice)

增强是织入到目标连接点上的一段代码,在SpringAOP中,增强除了表示一段代码还表示另一个和连接点相关信息的执行点方位。

引介(Introduction)

引介是一种特殊的增强,它为类添加了一些属性和方法

目标对象(Target)

增强逻辑织入的目标类

织入(Weaving)

织入是将增强添加到目标类具体连接点上的过程

AOP通常有三种织入方式

编译器织入

类装载器织入

动态代理织入:在运行期间为目标类增强生成子类的方式。

SpringAop采用动态代理织入方式

代理(Proxy)

一个类被AOP增强后,就产出一个结果类,他是融合了原类和增强逻辑的代理类。代理类可以有原类相同的接口,它可能是原类的子类。

切面(Aspect)

切面=切点+增强(引介)

切点()

切面机制:在创建代理时对目标类每个连接点使用静态切点检查,如果静态切点检查可知连接点不匹配,则运行中不再动态检查,若静态通过,运行时才进行动态切点检查。

切面注解

1.开启Aop注解 <aop:aspectj-autoproxy/>

2.@Aspect注解(声明切面类)作用于切面类

posted @ 2023-10-06 23:37  小心每个错误  阅读(161)  评论(0)    收藏  举报