Spring框架的核心之一AOP怎么用?

AOP

1.什么是AOP,在项目中使用过吗?

  • AOP 是面向切面编程,是Spring Framework的核心子模块;

  • 是一种设计思想,在不修改源代码的情况下给程序统一添加额外功能的一种技术

  • 面向对象的一种增强

2.AOP的作用?

  • 代码重用:将一些通用的功能(日志记录,安全控制)抽象出来,形成可重用的模块

  • 简化开发:使开发人员将关注点从业务逻辑中分离出来,使得开发更加简单明了

  • 提高系统可扩展性:需求变化时,修改AOP模块而不是业务逻辑,易于扩展和维护

  • 降低代码耦合度:将不同的关注点分离开来,可以避免代码之间的紧耦合

3.使用AOP的流程?

  1. 添加依赖

<!--引入aop依赖--> 
<dependency> 
<groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-aop</artifactId> 
</dependency>

      2. 创建切面类 添加@Aspect注解

@Aspect 
@Component 
public class LogAspect { 
/** 
    * Before注解: 前置通知,在目标方法执行之前执行; 
    * value参数: 切入点表达式,指定哪些方法需要被植入增强逻辑;
 */ 
@Before(value = "execution(public int cn.tedu._07springaop.aop.CalculatorImpl.*(..))") public void beforeMethod(){ //前置通知的增强逻辑 } }

      3. 编写切入点表达式,使用通知类型的注解对目标函数进行功能增强.

4.什么是切入点表达式?

切入点表达式指定了哪些方法需要被植入增强逻辑.它是一个表达式,用于匹配目标对象中的方法,提供切入点的精确定义

5.通知类型有哪些?

  • 前置通知:@Before 在被代理的目标方法前执行

  • 返回通知:@AfterReturning 在被代理的目标方法成功结束后执行

  • 后置通知:@After 在被代理的目标方法最终结束后执行

  • 异常通知:@AfterThrowing 在被代理的目标方法异常结束后执行

  • 环绕通知:@Around try-catch-finally 围绕整个被代理的目标方法 以上四种通知对应的位置

6.返回通知和后置通知的区别?

  • 执行时机

返回通知是在目标方法执行后返回结果时执行的通知,只有目标方法正常返回时才会执行

后置通知在目标方法执行后执行的通知,无论是否正常抛异常与否,后置通知都执行

AOP应用场景

  • 问题思考

现在有一个业务对象,这个对象已经实现了一些核心业务功能,但是我们希望在核心业务的基础上添加一些拓展任务,要求不能对目标业务对象中的实现进行修改

  • 解决思路

  1. 为目标类创建子类或者为目标类创建兄弟类,对目标业务进行功能拓展,如果拓展业务多,这种方法工作量大

  2. AOP会在系统启动时为目标类型创建子类或兄弟类型对象,称为动态代理对象.

事务的注解 @Transactional

若依框架 @Log

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值