倚楼听风雨
淡看江湖路

Spring AOP 的基本使用(下)以及浅析 Spring AOP 源码

上一篇文章《Spring AOP 的基本使用(上)以及浅析 Spring AOP 源码》忘记提及到 xml 形式来配置 aop,在 xml 声明中需要通过 Spring 的 aop 命名空间启用 AspectJ 自动代理,然后启用 AspectJ 自动代理,最后就是声明 Bean 就可以了。简单的示例如下:

当然了,在注解中要使用 @EnableAspectJAutoProxy 注解启用自动代理,所谓「自动代理」指的是无论我们使用 xml 形式还是注解的形式,都需要为我们的切面创建一个代理,我们的 @AspectJ 注解是仅仅是标识,不会创建并转换为切面的代理,所以这个自动代理就是为我们创建并寻找合适的代理,匹配切点匹配的 bean,执行各种通知的。

在说 AOP 源码之前来简单的描述一下如何在 Intellij IDEA 中配置 Spring-Framework 源码项目进行良好的阅读和注释笔记,Eclipse 的我没有研究,下面的操作都是在 idea 中完成的。

一、准备工作:

配置 Gradle 系统环境,Gradle 和 Maven 一样,都是用来管理项目,打包部署的,Spring Framework 使用 Gradle 来管理项目,所以需要我们配置一下。配置比较简单:

1.Gradle 官网下载安装包,下载那个 binary-only 版本即可,下载之后解压,配置两个系统环境变量。

GRADLE_HOME -- D:\binary\gradle-5.3.1
GRADLE_USER_HOME -- D:\binary\gradle-5.3.1\repo

2.将「%GRADLE_HOME%\bin;」配置在 Path 系统变量的后面,注意:分号必须有。接着 cmd 命令窗口输入「gradle -v」,看到版本号正常输出就说明安装成功了。至于那个 GRADLE_USER_HOME 系统环境变量的配置只需要配置上就好,后面的路径表示的是仓库目录,如果你不配置,就会默认存放在 C 盘用户目录下面,我是不习惯这样的,所以无论是 Maven 还是 Gradle 我都自定义仓库目录。

gradle系统环境变量配置教程

二、配置完比后,去 GitHub 上找到 Spring Framework 的项目地址,切换到 5.1.X 分支,我用的比较新,根据自己想要的版本分支切换就好。然后右侧 Clone or download 复制项目地址。

idea导入spring源码教程

三、然后在 idea 中,File -> New -> Project from Version Controll -> Git,输入项目地址克隆到自己的本地。注意:由于通常情况下,GitHub 的网速很慢,并且项目时间比较久远,所以很容易遇到 clone 失败的问题,没关系,这个时候你可以使用国内的码云镜像地址来引入,可以完美解决项目克隆问题。码云 Spring-Framework 项目地址:

Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本

idea导入spring源码教程

四、下载完毕之后,idea 一般都会提示你这是一个 Gradle 项目,发现了 JPA 和 web,然后配置编译就好了。Build 的过程中你可能会遇到如下几个错误:

  • -- cglib 和 objenesis 的编译错误
  • -- Kotlin 语法报错

第一个错误是因为源码里面没有提供相关 Jar 包,需要咱们自己使用命令 重新 repack 一下,在工作空间的 spring-framework 目录下面使用命令行执行「gradle objenesisRepackJar、gradle cglibRepackJar」这两个命令,然后你就会发现在 spring-core -> build -> libs 看到这两个 Jar 包,问题解决。至于第二个问题,网上说更新 Kotlin 插件就好使了,可是我更新之后依然不好使,然后因为咱们是以阅读源码为目的,所以将这个编译错误对应的代码注释掉就可以了。

idea导入spring源码解决cglib和objenesis编译错误的问题

然后我们就可以愉tong快ku地阅读 Spring 源码了。

之前老四是想着从头到尾分析一波的,但是老四发现自己太菜了,况且早就有大佬出书分析 Spring 源码了,帮助我们分析地明明白白的,所以老四就不在关公面前耍大刀胡说八道了。这本书是郝佳的《Spring源码深度解析(第2版)》,不过老四根据大佬的讲解画了一个脑图,来帮助自己学习和分析,顺便分享给你们。pdf 电子版也准备好了,放在了DownHub 上面:

人家讲解的很透彻,源码都标记了中文注释,你可以自己搭建好 Spring 源码阅读环境之后跟着本书的讲解在项目源码中一步一步的跟着理解,需要一定的耐心和学习水平,所以想提升自己就硬着头皮看下去,看不懂就多看几遍,也建议你们边看边总结,画脑图,脑图是一个很好的知识梳理体系模型,老四画了一些的 Java 相关知识的脑图,择日会在 GitHub 上面开源,本文现将自己整理 AOP 源码总结的脑图分享出来,供大家指点批评、参考,源文件文末自助获取下载。

spring aop源码分析脑图

xmind 之 AOP 源码总结脑图源文件文末自助获取。

更博不易,如果觉得文章对你有帮助并且有能力的老铁烦请捐赠盒烟钱,点我去赞助。或者扫描文章下面的微信/支付宝二维码打赏任意金额(点击「给你买杜蕾斯」),也可扫描小站放的支付宝领红包二维码,线下支付享受优惠的同时老四也可以获得对应赏金,老四这里抱拳谢谢诸位了。捐赠时请备注姓名或者昵称,因为您的署名会出现在赞赏列表页面,您的捐赠钱财也会被用于小站的服务器运维上面,再次抱拳感谢。

资源下载

隐藏内容:******,购买后可见!

下载价格:0 G币

您需要先后,才能购买资源

欢迎访问高老四博客(glorze.com),本站技术文章代码均为老四亲自编写或者借鉴整合,其余资源多为网络收集,如涉及版权问题请与站长联系。如非特殊说明,本站所有资源解压密码均为:glorze.com。

赞(2) 给你买杜蕾斯
本站原创文章受自媒体平台原创保护,未经允许不得转载高老四博客 » Spring AOP 的基本使用(下)以及浅析 Spring AOP 源码
分享到: 更多 (0)

开始你的表演 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下老四,鼓励我更好的创作

支付宝扫一扫打赏

微信扫一扫打赏