温馨提示:按照我的步骤、自己版本对应好,一定可以搭建成功!!
1 版本介绍
-
Spring-framework:5.2.1
-
Gradle:5.6.4
-
Kotlin:1.3.41
-
Jdk:1.8
-
Idea:2018.2
2 源码下载
# 在github上下载你最好有梯子,需要什么版本就直接改版本号就行了 git clone -b v5.2.21.RELEASE https://github.com/spring-projects/spring-framework.git
3 gradle下载
注意:gradle的版本是根据spring 的版本来决定的,如下图:
-
step1:gradle官网地址:Gradle Distributions
-
step2:选择结尾为“all”的压缩包
-
step3:下载、解压、配置环境变量(比较基础,这里略了)
-
step4:验证是否安装成功
-
step5:将idea的Kotlin直接升级到最新版本
注意:这里升级它很重要,因为你不升级的话,后面将项目导入到idea的时候编译必失败!!!
-
step6:如果你有梯子的话,gradle就到这里完事了,不需要配置什么镜像依赖地址。如果你没有的话,那就需要配置镜像地址,这里网上搜一下有很多,这里就略过了。
4 将项目导入idea
-
step1:file -> open -> 找到你存放的spring位置
-
step2:配置gradle信息
-
step3:让他自己编译吧,放心!你是不可能一次编译成功的
5 问题及解决方案
-
问题一:Can’t find resource for bundle java.util.PropertyResourceBundle,key kotlin.gradle.testing.enabled
-
解决:这个跟你的spring没有关系,需要改你的idea配置。
这个是你idea的安装目录下的lib文件下的一个jar包,你要做的事就是:(1)先备份一个留着;(2)解压它;(3)修改里面misc目录下的registry.properties文件,在最下面一行加上:kotlin.gradle.testing.enabled=false;(4)保存;(5)打回jar包;(6)替换之;(7)重启idea
-
kotlin.gradle.testing.enabled=false
-
问题二:Kotlin:Classpath entry points to a non-existent location: spring-cglib-repack-3.3.0.jar/objenesisPepack.jar
-
解决:双击下图红色框的两个jar即可
-
-
问题三:找不到符号 符号: 变量 CoroutinesUtils 位置
-
解决:点击下图那个红箭头的地方即可
-
6 新建一个module测试一下
-
step1:在项目根目录下新建一个module
-
step2:自己命名好,next就完事了
-
step3:新建好之后,在新module的build.gradle增加如下配置
compile project(":spring-context") compile(project(":spring-instrument"))
-
step4:然后就是一个配置文件,两个java类,文件结构如下:
spring-config.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--把对象的创建交给spring来管理,这里的相关属性值依你自己的为准!!!--> <bean id="person" class="com.nicolas.debug.Person"> <property name="username" value="zhangsan"></property> </bean> </beans>
Person.java
package com.nicolas.debug; public class Person { private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }
Test.java
package com.nicolas.debug; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("spring-config.xml"); Person person = (Person) ac.getBean("person"); System.out.println(person.getUsername()); } }
-
step5:启动
备注:如果这里启动报:找不到符号 InstrumentationSavingAgent,那是因为你没有在build.gradle里配置compile(project(":spring-instrument"))
后面就开始debug学习源码吧~~~~