Spring集成AspectJ

 
我们知道,Spring AOP 是一个简化版的 AOP 实现,并没有提供完整版的 AOP 功能。通常情况下,Spring AOP 是能够满足我们日常开发过程中的大多数场景的,但在某些情况下,我们可能需要使用 Spring AOP 范围外的某些 AOP 功能。

例如 Spring AOP 仅支持执行公共(public)非静态方法的调用作为连接点,如果我们需要向受保护的(protected)或私有的(private)的方法进行增强,此时就需要使用功能更加全面的 AOP 框架来实现,其中使用最多的就是 AspectJ。

AspectJ 是一个基于 Java 语言的全功能的 AOP 框架,它并不是 Spring 组成部分,是一款独立的 AOP 框架。

但由于 AspectJ 支持通过 Spring 配置 AspectJ 切面,因此它是 Spring AOP 的完美补充,通常情况下,我们都是将 AspectJ 和 Spirng 框架一起使用,简化 AOP 操作。

使用 AspectJ 需要在 Spring 项目中导入 Spring AOP 和 AspectJ 相关 Jar 包。
  • spring-aop-xxx.jar
  • spring-aspects-xxx.jar
  • aspectjweaver-xxxx.jar

在以上 3 个 Jar 包中,spring-aop-xxx.jar 和 spring-aspects-xxx.jar 为 Spring 框架提供的 Jar 包,而 aspectjweaver-xxxx.jar 则是 AspectJ 提供的。

基于 AspectJ 实现 AOP 操作
  1. 基于 xml 配置实现 AspectJ 的 AOP 开发
  2. 基于注解方式实现 AspectJ 的 AOP 开发

AspectJ Jar 包下载

AspectJ Jar 包的下载步骤如下。

1. 使用浏览器访问 AspectJ 包下载页面,选择相应的版本,这里我们以 1.9.5 稳定版本为例进行介绍。


图1:AspectJ 下载

2. 点击 aspectj-1.9.5.jar 进入下载页面,选择 Select another mirror,如下图。


图2:AspectJ Jar 包下载
 

3. 根据自己所处地区选择下载,这里我们选择的是中国科学技术大学的下载地址。


图3:AspectJ 下载地址选择

4. 下载完成后解压该 Jar 文件,需要导入的 jar 包在 files 文件夹的 lib 目录下。


图4:AspectJ jar 包