举例介绍spring中的AOP(简单的例子,一看就懂)

本文介绍了AOP(面向切面编程)的概念,通过SpringAOP的比喻阐述了切面、切点、通知和其五种类型的作用。文章还给出了一个SpringAOP的示例,展示了如何利用AOP实现关注点分离和代码优化。
摘要由CSDN通过智能技术生成

AOP,全称为面向切面编程(Aspect Oriented Programming),是一种编程范式,其目标是提高代码的模块化。它通过预定义的程序规则,允许开发者在不修改源代码的情况下,增加或改变程序的行为。在AOP中,我们将那些影响多个类的公共行为封装到一个可重用的模块,称为"切面"。这样,我们可以将这些行为以声明的方式应用到需要的类中,减少代码冗余,提高代码的可读性和可维护性。

 举例1:

Spring AOP就像是电影制作。在电影制作中,演员(业务逻辑)是主角,但是还需要导演(Spring AOP)来管理和协调。

  1. 切点(Pointcut):就像是电影的拍摄场景。这是导演(Spring AOP)决定何时开始拍摄的地方。

  2. 通知(Advice):就像是电影的剧本。这是导演(Spring AOP)决定演员(业务逻辑)在每个场景中要做什么的地方。

  3. 切面(Aspect):就像是整个电影的剧本和场景的组合。导演(Spring AOP)在这里决定在哪个场景中使用哪个剧本。

Spring AOP有五种类型的通知,就像电影中的五种拍摄方式:

  • 前置通知(Before):在场景开始之前开始拍摄。
  • 后置通知(After):在场景结束后继续拍摄。
  • 返回通知(After Returning):在场景成功结束后拍摄。
  • 异常通知(After Throwing):如果场景中出现错误,就开始拍摄。
  • 环绕通知(Around):在场景开始和结束时都进行拍摄。

举例2:

假设你正在玩一个电子游戏,你是主角,你的任务是打败怪物(这就是你的业务逻辑)。但是游戏中还有一些其他的事情需要处理,比如计分、生命值管理、游戏进度保存等等。这些都是你需要在打怪的过程中不断做的事情,但是它们并不是你的主要任务。

在这种情况下,Spring AOP就像是游戏的设计者,他们决定了在何时何地做这些额外的事情。

  1. 切点(Pointcut):这就是在游戏中决定何时做额外事情的地方,比如在你打败一个怪物后增加分数。

  2. 通知(Advice):这就是决定做什么额外的事情,比如增加分数、保存游戏进度等。

  3. 切面(Aspect):这就是把切点和通知结合起来的地方,比如在你打败一个怪物后(切点),增加分数和保存游戏进度(通知)。

接下来专业一点:

  1. 切点(Pointcut):切点定义了在哪些方法上应用通知。它是一组表达式,用于匹配方法的执行。例如,我们可以定义一个切点,让它匹配所有以 "get" 开头的方法。

  2. 通知(Advice):通知是在方法执行的某个特定时刻执行的代码片段。Spring AOP定义了五种类型的通知:

    • 前置通知(Before):在目标方法执行之前执行。
    • 后置通知(After):在目标方法执行之后执行,无论方法执行成功还是出现异常。
    • 返回通知(After-returning):在目标方法成功执行之后执行。
    • 异常通知(After-throwing):在目标方法抛出异常后执行。
    • 环绕通知(Around):在目标方法执行之前和之后执行,可以控制何时执行方法,甚至可以阻止方法的执行。
  3. 切面(Aspect):切面是切点和通知的组合。它的作用是将通知应用到切点匹配的方法上。切面可以看作是将横切关注点(如日志记录、事务管理等)模块化的方式。

这就是Spring AOP的基本概念。它是一种强大的工具,可以帮助我们实现关注点的分离,提高代码的可读性和可维护性。

这里是一个简单的Spring AOP示例:

@Aspect
@Component
public class LoggingAspect {

    @Before("execution(* com.example.myapp.*.*(..))")
    public void logBefore(JoinPoint joinPoint) {
        System.out.println("Executing: " + joinPoint.getSignature().getName());
    }
}

在这个例子中,@Aspect注解标识这个类是一个切面,@Component注解让Spring知道应该管理这个类的实例。@Before注解定义了一个前置通知,它将在匹配给定模式的任何方法执行之前执行。这个模式匹配com.example.myapp包下的所有方法。

以上就是Spring AOP的基础知识。在实际使用中,它可以帮助我们更好地管理和组织代码,提高代码的可重用性和可维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值