AOP执行的流程

Spring AOP是通过动态代理实现的,它在运行时通过生成代理对象来拦截和增强目标方法的执行。

具体运行流程如下:

1. 定义切面:使用Spring的AOP注解(如@Aspect)定义切面类,标识切面的切点和通知。

2. 创建目标对象:创建需要被增强的目标对象,该对象通常是一个普通的Spring bean。

3. 创建AOP代理:当Spring容器初始化时,它会扫描并检测切面类,并为目标对象创建AOP代理。Spring提供两种代理方式:JDK动态代理和CGLIB动态代理。

4. 选择代理方式:如果目标对象实现了接口,则使用JDK动态代理;如果目标对象没有实现接口,则使用CGLIB动态代理。

5. 生成代理对象:根据选择的代理方式,Spring会生成一个代理对象,该对象实现了目标对象所实现的接口或者继承了目标对象的类。

6. 执行目标方法:当调用代理对象的方法时,AOP代理会拦截对目标方法的调用,并根据切点和通知的定义来执行相应的增强逻辑。

7. 执行通知:根据切点的定义,AOP代理会在目标方法的不同位置(如方法调用前、方法调用后、方法返回时等)执行相应的通知逻辑。

通过上述流程,Spring AOP能够在运行时动态地将切面逻辑织入到目标方法中,实现对目标方法的拦截和增强。这种方式使得切面逻辑与核心业务逻辑解耦,提供了更好的可维护性和灵活性。

需要注意的是,Spring AOP只能拦截被Spring容器管理的Bean的方法调用。对于在容器外部创建的对象或者静态方法调用,Spring AOP是无法拦截的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值