环境
- Spring5.2.x
- jdk8
- idea2020
Spring
Gradle
查看Spring使用的Gradle版本,这里要记得将distributionUrl指向本地的gradle包,不然还是会去下载的Gradle
下载
Gradle下载地址:https://gradle.org/releases/
安装
当我们下载好之后,先配置一下 distributionUrl地址为我们本地的Gradle
distributionUrl=file:///E:/data/gradle-5.6.4-bin.zip
win下,配置环境变量GRADLE_HOME
和GRADLE_USER_HOME
(一个放库文件的目录)
最后输入gradle -v
,看到下面的结果就说明安装成功啦
配置maven仓库
在源码的根路径找到build.gradle
文件,在repositories
中加入下面的代码,修改maven地址为阿里云仓库,记得用这个,不要图片少几个s就不用我这个了
// mavenCentral()
// 新增阿里云仓库
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/'}
// 新增springsource仓库
maven { url "https://repo.springsource.org/plugins-release" }
maven { url "https://repo.spring.io/plugins-release" }
maven { url "https://repo.spring.io/libs-spring-framework-build" }
maven { url "https://repo.spring.io/milestone" }
构建Spring5.2.x源码
在spring源码根路径中找到gradlew.bat
并在cmd窗口中运行
等待下载,如果失败了可能是网络原因,如果配置了maven仓库应该可以顺利下载
在spring项目中找到 import-into-idea.md
文件
所以我们Spring源码根目录启动cmd,在执行命令./gradlew :spring-oxm:compileTestJava
导入步骤
这里第一次导入时可能需要手动停止,然后去设置这个idea的gradle本地仓库,不然又直接下载到C盘去了,还有本地的gradle,不然idea要自己去下载了
然后又是慢慢等待下载的时间了,下载好之后可以看到下图了
接着连按两次shift键,找到ApplicationContext类,并按ctrl+shift+alt+u,看到下图也表示成功啦4
在编译一下
我们可以找个单元测试跑一下
路径:\spring-framework-5.2.x\spring-core\src\test\java\org\springframework\util\StringUtilsTests.java
全局搜索(CRTL + SHIFT + F)-Werror
有两个文件使用了这个编译参数,直接删掉就行了。
全局搜索allWarningsAsErrors = true
改成allWarningsAsErrors = false
新建测试模块
1.在Spring中添加自己的module模块,同样选择gradle构建
2.输入ArtufactId,工程名
3.慢慢等待下载完成即可,下载完之后我们该导入的导入
compile(project(":spring-context"))
compile(project(":spring-beans"))
compile(project(":spring-core"))
compile(project(":spring-aop"))
4.下面编写一个简单的applicationContext获取容器用的bean,主要是测试Spring源码构建编译过程是否成功!
JavaConfig
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan
public class JavaConfig {
@Bean
public User user(){
return new User("张三","男");
}
}
Main
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext ac = new AnnotationConfigApplicationContext(JavaConfig.class);
User user = (User) ac.getBean("user");
System.out.println(user);
}
}
User
public class User {
private String name;
private String sex;
public User() {
}
public User(String name, String sex) {
this.name = name;
this.sex = sex;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
'}';
}
}
执行结果
参考文献
如果你跟着我走还是出现问题可以看一下,我给的参考文献我又是看参考文献解决了不少的问题
- https://blog.csdn.net/m0_37959155/article/details/126273608
- https://blog.csdn.net/weixin_40251892/article/details/108962572
- https://blog.csdn.net/weixin_28221501/article/details/113318717
- https://blog.csdn.net/weixin_44008517/article/details/114260670
- https://blog.csdn.net/qq_42282200/article/details/105907972
- https://blog.csdn.net/qq_42282200/article/details/105907972