Spring的AOP是什么?一文详解Aspect、joinpoint、pointcut等概念

网安智编 厦门萤点网络科技 2025-12-27 00:05 49 0
首先罗列一些AOP的概念 (切面):横切性关注点的抽象即为切面,它与类相似只是两者的关注点不一样,类是对物体特征的抽象,而切面是横切性关注的抽象。 (连接点):所谓连接点是指那些被连接到的点,在中这些点指的是方法,因为只支持方法类型的连接点...

首先罗列一些AOP的概念

(切面):横切性关注点的抽象即为切面,它与类相似只是两者的关注点不一样,类是对物体特征的抽象,而切面是横切性关注的抽象。

(连接点):所谓连接点是指那些被连接到的点,在中这些点指的是方法,因为只支持方法类型的连接点,实际上还可以是field或类的构造器

(切入点):所谓切入点是指我们要对那些进行拦截的定义

(通知):拦截到之后要做的事情就是通知,通知分为前置通知,后置通知,异常通知,最终通知,环绕通知。

(目标对象):代理的目标对象

weave(织入):将应用到对象并导致proxy对象创建的过程称为织入

(引入):在不修改代码的前提下,可以在运行期为类动态的添加一些方法或field

基于代理的AOP实现(基于java反射机制)

1:创建实现类bean

2:创建代理类

实现 这两个接口

3:定义切入点

指定正则表达式,匹配以结尾的方法

4:定义通知

这里面属性的名字是固定的:代理类,:切入点

5:定义代理工厂

什么是spring的aop_AOP概念 Aspect Joinpoint Pointcut Advice Target Weave Introduction Java反射机制 AOP代理类 MethodBeforeAdvice AfterRunningAdivce 切入点定义 通知定义 代理工厂 自动代理 Cglib 注解 AspectJ xml

三个的name也是固定的,分别是目标对象,拦截器,和实现了哪些接口

自动代理的AOP实现(基于cglib)

只需要声明通知就可以,注意两个都是固定的,第一个指向代理类,第二个使用正则表达式匹配目标对象

需声明支持自动代理

的AOP实现(基于注解)

1:增加xml支持

2:自动扫面注解和声明使用自动代理

3:编写切面类

@//声明为切面

@//声明为组件

在方法上加

@(value = "( void com.mihe.dao.impl..*())")

表示类中的所有以结尾的方法