AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,用于将横切关注点(如日志记录、安全检查、事务管理等)从业务逻辑中分离出来,以提高代码的模块化程度和可维护性。以下是AOP的核心概念和特点:
切面(Aspect):切面是封装横切关注点的模块,包含了跨越多个对象的行为和责任。
连接点(Joinpoint):程序执行过程中的某个特定点,如方法调用、异常抛出等,可以在这些点插入切面代码。
切入点(Pointcut):定义了切面应该在哪些连接点上执行的规则,即匹配连接点的条件表达式。
通知(Advice):在连接点上执行的具体操作,如前置通知(Before)、后置通知(After)、环绕通知(Around)等,用于实现切面的具体逻辑。
织入(Weaving):将切面代码插入到目标对象中的过程,可以在编译期、类加载期或运行期进行。
Advisor(顾问)是一个关键的概念,它代表了一个切面(Aspect)的配置信息,决定了切面应该在何时何地执行(即匹配的切入点Pointcut)以及如何执行(即通知Advice)
AOP框架如Spring AOP、AspectJ等,提供了实现AOP概念的工具和API,使得开发者能够更加方便地应用面向切面编程思想来组织和管理代码
每个字都认识,但这是啥?
对于这些名词,都太抽象了。
就是 定义一个方法A,根据需要,把这个方法 运行在其他的方法调用过程中。比如,之前或者之后调用。如何实现?
怎么标识 定义的通用方法?
把这个通用方法 叫做 通知 Advice
怎么找那些需要执行通用方法的方法?
定义连查找方法,也就是切入点Pointcut,把需要执行通用方法的方法叫做连接点Joinpoint
通知和切入点组合在一起,就叫Advisor
多个 Advisor 组合在一起,就叫Aspect
把Advice 应用在 方法中,就叫织入