一、什么是AOP
Spring的AOP(面向切面编程,Aspect-Oriented Programming)是一种编程范式,它允许你将横切关注点(cross-cutting concerns)从业务逻辑中分离出来。横切关注点是指那些影响多个类或模块的功能,如日志记录、事务管理、权限检查等。通过AOP,这些功能可以被集中管理和处理,而无需在每个业务逻辑方法中重复编写代码。
二、AOP的核心概念
1、切面(Aspect)
切面是包含横切逻辑的组件。它可以是一个类,其中定义了通知(Advice)和切入点(Pointcut)。切面将横切关注点模块化为可重用的组件。
2、通知(Advice)
通知是在特定连接点执行的代码。它定义了在何处以及如何执行横切逻辑。Spring AOP支持五种类型的通知:
- Before:前置通知,在方法调用之前执行。
- After:后置通知,在方法调用之后执行,无论方法是否抛出异常。
- After-returning:返回通知,仅在方法成功返回后执行。
- After-throwing:异常通知,仅在方法抛出异常时执行。
- Around:环绕通知,在方法调用前后都可以执行自定义逻辑。
3、切入点(Pointcut)
切入点定义了通知应该应用到哪些连接点。它是一组匹配的方法或类的规则,通常使用表达式来指定。例如,execution(* com.example.service.*.*(..))表示匹配com.example.service包下的所有方法。
4、连接点(Join Point)
连接点是程序执行过程中的某个点,比如方法调用、异常抛出等。在Spring AOP中,连接点通常是方法调用。
5、引入(Introduction)
引入允许你向现有类添加新的方法或属性。虽然不常用,但在某些情况下可以增强现有类的功能。<