【Spring源码】1.下载与编译

【Spring源码】1.下载与编译,第1张

首先我们需要下载一套源码到本地

源码下载与编译 下载源码 1. 使用Git clone下载

安装了Git可以直接clone到本地

源码版本选择

本来直接clone的最新版本,但是一直报各种错,参考了官方说明才知道最新版本已经需要JDK17了(已哭晕...)

https://github.com/spring-projects/spring-framework/wiki/Build-from-Sourcehttps://github.com/spring-projects/spring-framework/wiki/Build-from-Source

我们如果还想用JDK8,需要选择较前版本。

查看GitHub的更新情况,最近的一个稳定版本是5.2.21.RELESE

GA即General Availability,表示正式发布的版本(国外通常用 GA 来标识 release 版本,GA 版本是开发团队认为该版本是稳定版(也有使用Stable/Production的),可以在生产环境中使用。 我这边使用的是JDK8,所以选择分支版本

git clone -b 5.2.x https://github.com/spring-projects/spring-framework.git

 2. 网页下载

下载地址https://github.com/spring-projects/spring-framework

​如果GitHub打不开/下载速度太慢我这边也把源码上传了下,有两种下载方法供大家选择:

1. csdn的资源链接:想支持下的同学可以选csdn的资源链接送瓶水支持下^_^(毕竟码字不易,喝饱水,持续分享更有动力,多谢🙏🙏🙏 诚恳脸.jpg)

Spring源码(5.2.21版本,tar.gz格式,JDK8可用)-Java文档类资源-CSDN下载

2. gitee:当然分享是第一要务,我也在上传压缩文件到了gitee上,可直接自取

spring5源码

导入idea

​选择Gradle工程

​idea会自动加载,等他加载好

​报错处理(未遇到,可跳过)

异常详情

POM relocation to an other version number is not fully supported in Gradle : xml-apis:xml-apis:2.0.2 relocated to xml-apis:xml-apis:1.0.b2.

即需要将xml-apis:xml-apis的版本换为1.0.b2,在项目中全局搜索xml-apis

​尝试在项目根目录下的build.gradle文件中添加如下代码,指定xml-apis的版本为1.0.b2

configurations.all {
    resolutionStrategy {
        force 'xml-apis:xml-apis1.0.b2'
    }
}
重新加载

​新建module测试

​按下图选择,然后next,起个名,完成~

​修改配置

在新建module中的build.gradle中添加如下配置:

compile(project(":spring-context"))

​新建测试类

记得刷新gradle,然后新建文件(我这边建了一个启动类+一个配置类+一个实体类)进行测试

​代码如下:

AqinApplication.java

package com.aqin;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * @author aqin1012 AQin.
 * @date 2022/4/18 4:16 PM
 * @Version 1.0
 */
public class AqinApplication {
   public static void main(String[] args) {
      AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class);
      System.out.println(context.getBean(AqinEntity.class));
   }
}

AqinEntity.java

package com.aqin;

import org.springframework.stereotype.Component;

/**
 * @author aqin1012 AQin.
 * @date 2022/4/18 4:17 PM
 * @Version 1.0
 */
@Component
public class AqinEntity {
   String name;
   Integer age;
}

JavaConfig.java

package com.aqin;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * @author aqin1012 AQin.
 * @date 2022/4/18 5:00 PM
 * @Version 1.0
 */
@Configuration
@ComponentScan("com.aqin")
public class JavaConfig {
}
查看测试结果

加上断点,debug进行测试,下图可以看到新建的实体类已经被spring容器加载进去啦,撒花🎉🎉🎉~~~

常见报错通用处理方式

如果按照本文的所有版本仍出现了一些奇奇怪怪的报错,请检查以下三个地方

1. 编译工具

1⃣️ 是否是自己本地gradle的路径

2⃣️ 默认都是Gradle,可尝试如图中选项配置

3⃣️ 选择Specified location,后面选择本地gradle的路径

4⃣️ 选择本地的1.8版本JDK

2. 编译器

​1⃣️ 选择1.8版本

3. 项目结构

​​1⃣️ 选择本地安装的1.8版本JDK

2⃣️ 选择SDK 8

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/722072.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存