JDK1.8编译spring5.3.10源代码

目录

一、编译主模块

环境准备

配置gradle

编译模块

新建项目测试 

二、编译aop模块

下载aspectj-1.9.6.jar 包

安装idea插件

使用aspectJ编译项目 

测试

三、解决每次运行都执行gradle任务


由于spring5.3.10用到了jdk高版本的jfr功能,因此我们编译spring需要用到JAVA9以后的版本,但是我们平时开发项目以java8为主,因此不想切来切去,想用java直接编译spring,阅读最新版的spring代码。

一、编译主模块

环境准备

下载完spring的的代码,直接导入idea,先说明一下我用的组件版本:

gradle:gradle-7.2-bin.zip

JDK:JDK1.8_301(我试过用1.8_201不行,最好用我这个版本(1.8_301),不然有些文件编译不了,我也找不到原因)

配置gradle

在build.gradle文件配置以下类容,加快加载依赖的速度:

		repositories {
			//新增以下2个阿里云镜像
			maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
			maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
			mavenCentral()
			maven { url "https://repo.spring.io/libs-spring-framework-build" }
			//新增spring插件库
			maven { url "https://repo.spring.io/plugins-release" }
		}

 修改gradle版本

到这就刷新gradle,等待下载 

编译模块

主要编译模块有:

spring-core
spring-aop
spring-beans
spring-context

依次点击gradle的构建

构建过程中,有类会报错的,主要以下两个类,

FlightRecorderStartupStep.java

FlightRecorderStartupEvent.java

把相关jsr的类注释掉即可

一般我们是用不上这类的 

新建项目测试 

经过以上步骤,基本上都配置完了,我们需要的是测试一下,新建项目是否可以跑起来,并且断点调试。

直接idea,右键新建module,目录结构

 把相关的依赖引入,写一个main方法,

	public static void main(String[] args) {
		//System.out.println("哈哈哈啊啊哈");
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
		//context.refresh();
		UserService userService = context.getBean(UserService.class);
		userService.test();
		System.out.println("哈哈哈哈哈哈");


	}

正常是能通的了,这个时候如果遇到控制台乱码什么的,请配置一下

help-->Edit Custom VM Options...  加上编码配置就行

二、编译aop模块

当我们需要调试aop的时候,这时候,我们需要引入aspects的注解,这个时候我们需要引入spring-aspects模块,但是这个模块有.aj文件是需要ajc编译器才能编译的

下载aspectj-1.9.6.jar 包

下载链接

安装,直接双击,下一步,下一步。。。需要记录一下安装的路径,因为等会配置需要用到

å¨è¿éæå¥å¾çæè¿°

安装idea插件

在pluginsz直接搜索,点解安装

 然后在settings--Compiler--Java Compiler中的use compiler:选择Ajc

使用aspectJ编译项目 

配置完成后,我们需要编译一下aop,和aspectJ项目

file-project structure-modules下面

spring-aop和spring-aspects 分别执行

执行完后的效果是这样的, 

到这里,可以在自己写的项目中,引入模块,并且写一个aop测试和调试 

测试

 

执行成功。。。

 参考文章:

spring源码项目使用spring-aspects_gsy159369的博客-CSDN博客

三、解决每次运行都执行gradle任务

当我们构建完spring源码项目,我们会发现,在module里面执行自己的main方法,都会去执行很多gradle的task,导致我们自己的方法执行很慢,这个时候,我们可以修改一下idea的配置,可以不用执行这些task

修改完之后,项目运行会报错,因为gradle默认的编译路径是build目录,我们改为idea后,默认是out目录,这个时候会同时存在两个目录:

按报错的意思,就是有冲突,我们需要把build目录删除,或者clean掉,留下out,然后可以在重新点击编译相关项目,然后运行我们的例子就可以了。正常是没问题的了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值