Spring AOP 与 @AspectJ 集成深度解析
1. Spring AOP 基础概念
在 Spring 中,每个代理都包含通知器(advisor)。通知器是 Spring 的一个内部概念,使用 AspectJ 集成的开发者无需熟悉它(在较旧的 Spring AOP 中,通知器概念是显式的)。每个通知器又包含两部分:切入点(pointcut)和通知(advice)。
- 切入点 :用于选择连接点,以决定是否执行通知。
- 通知 :实现横切功能所需的逻辑。
默认情况下,Spring 使用 JDK 动态代理。不过,这仅在目标类实现了一个或多个接口时才有效。如果目标类未实现接口,或者你想避免使用 JDK 代理,Spring 提供了基于 CGLIB 的代理,它会动态创建目标类的子类。但由于 Java 不允许重写 final 方法,动态创建的代理无法对目标类中的 final 方法进行增强。若 Spring 检测到这种情况,会产生警告。当调用 final 方法时,可能会导致目标对象和代理对象状态不一致。若看到此类警告,应考虑避免使用 CGLIB 代理。
2. 依赖注入框架中的基于代理的 AOP
Spring AOP 与 Spring 框架核心的依赖注入(DI)机制配合良好。你只需为主要注入进行配置。例如,可使用以下代码片段将 OrderServiceImpl 注入到 OrderController 中:
<bean id="orderCo
超级会员免费看
订阅专栏 解锁全文
713

被折叠的 条评论
为什么被折叠?



