spring Aop

本文介绍了Spring AOP的概念及其在软件开发中的优势,包括降低模块耦合度、系统扩展性和代码复用。讨论了AOP的使用场景,如权限验证、缓存、错误处理等,并详细解析了切面、连接点、通知等核心概念。重点讲述了Spring AOP的五种通知类型:前置、正常返回、异常返回、环绕和返回通知。最后,通过对比OOP,阐述了AOP如何在不修改源代码的情况下实现功能增强,以解决在业务方法中添加额外逻辑的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、aop为面向切面编程,AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性。
在这里插入图片描述

优点:

1、降低模块之间的耦合度

2、使系统容易扩展

3、更好的代码复用。

AOP使用场景:
AOP用来封装横切关注点,具体可以在下面的场景中使用:

Authentication 权限

Caching 缓存

Context passing 内容传递

Error handling 错误处理

Lazy loading 懒加载

Debugging  调试

logging, tracing, profiling and monitoring 记录跟踪 优化 校准

Performance optimization 性能优化

Persistence  持久化

Resource pooling 资源池

Synchronization 同步

Transactions 事务

AOP相关概念:
切面(Aspect) :官方的抽象定义为“一个关注点的模块化,这个关注点可能会横切多个对象”。
连接点(Joinpoint) :程序执行过程中的某一行为。
通知(Advice) :“切面”对于某个“连接点”所产生的动作。
切入点(Pointcut) :匹配连接点的断言,在AOP中通知和一个切入点表达式关联。
目标对象(Target Object) :被一个或者多个切面所通知的对象。
AOP代理(AOP Proxy) 在Spring AOP中有两种代理方式,JDK动态代理和CGLIB代理。

spring aop通知(advice)分成五类:
前置通知[Before advice]:在连接点前面执行,前置通知不会影响连接点的执行,除非此处抛出异常。
正常返回通知[After returning advice]:在连接点正常执行完成后执行,如果连接点抛出异常,则不会执行。
异常返回通知[After throwing advice]:在连接点抛出异常后执行。
返回通知[After (finally) advice]:在连接点执行完成后执行,不管是正常执行完成,还是抛出异常,都会执行返回通知中的内容。
环绕通知[Around advice]:环绕通知围绕在连接点前后,比如一个方法调用的前后。这是最强大的通知类型,能在方法调用前后自定义一些操作。环绕通知还需要负责决定是继续处理join point(调用ProceedingJoinPoint的proceed方法)还是中断执行。

怎么在原来类的实现的基础上添加逻辑代码(在不修改源代码的情况下,可以实现功能的增强)。

刚开始说到是对OOP的一种补充,具体补充的是什么呢?考虑一种情况,如果我们需要在所有方法里打印一句日志。

按照OOP的处理思想
1>直接在源代码方法中加日志
2>在不修改源代码的情况下重写一个类,再编写一个日志打印
3>用继承,重写。在不修改源代码的情况下重新创建一个类,再编写一个日志打印,并调用源代码中的方法。这就是面向对象编程思想。

但是如果要求我们在业务方法开始或结束时再打印一些日志呢?看起来一个比一个简单,其实还是很繁琐,这样始终不是办法,而且我们总是在改业务方法,在业务方法里面掺杂了太多的其他操作,侵入性太高。
所以,我们可以用AOP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值