1 AOP 简介

Wu Jun 2018-12-18 21:53:15
06 Spring > 03 AOP

AOP 即 Aspect Oriented Programming,面向切面编程。

AOP 允许程序员模块化横向业务逻辑,或定义核心部分的功能,例如日志管理和事务管理。

1 AOP 术语

2 Spring 的 AOP 支持

Spring 对 AOP 有以下四种支持:

前三种属于 Spring AOP 框架,基于动态代理机制构建,仅支持函数级别的拦截。如果需要实现更复杂的 AOP 功能,则应使用 AspectJ 框架

在 Spring AOP 框架中,通过在 beans 的外围包含一个代理类来将切面织入到这些 beans。调用者跟代理类直接联系,代理类拦截函数调用,然后执行切面逻辑之后再调用真正的目标对象的方法。

虽然 Spring AOP 能够满足许多应用的切面需求, 但是与 AspectJ 相比, Spring AOP 是一个功能比较弱的 AOP 解决方案。 AspectJ 提供了 Spring AOP 所不能支持的许多类型的切点。

AOP 的源码中用到了两种动态代理来实现拦截切入功能:

3 AspectJ

AspectJ 注解生效

通过类级别的 @EnableAspectJAutoProxy 注解开启自动代理机制

@Configuration
@EnableAspectJAutoProxy //开启AspectJ的自动代理机制
@ComponentScan
public class ConcertConfig {
}