idea 导入spring源码
学习spring源码最好的方法就是运行源码然后在源码基础上进行debug学习, 现在就总结一下spring源码怎么导入到idea中, 网上很多教程说需要安装gradle,其实gradle是不需要本地安装的, 本地安装只是为了提高构建速度。
- 下载源码,直接通过spring官网找到源码,然后通过git导入idea.
spring源码git地址: https://github.com/spring-projects/spring-framework
- 添加阿里的maven仓库,然后编译源码
这里有两个文件需要修改,一个是根目录下的build.gradle文件,还有一个是buildSrc里的build.gradle
repositories {
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven{ url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
mavenCentral()
gradlePluginPortal()
}
3. 修改完以在构建spring这样速度会快很多。加载完以后新增一个自己的模块。
4. 执行 spring-oxm
中的 compileTestJava
4. 引入context模块
5. 测试文件
@Configurable
@ComponentScan("com.yousuf")
public class AppConfig {
}
@Component
public class Clazz {
@Autowired
private Student student;
public Clazz() {
System.out.println("-----init clazz-----");
}
}
@Component
public class Student {
@Autowired
private Clazz clazz;
public Student() {
System.out.println("-------init student-------");
}
}
// 这个是测试类
public class ApplicationTest {
@Test
void app_test() {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
System.out.println(ctx.getBean(Clazz.class));
System.out.println(ctx.getBean(Student.class));
}
}
报错信息
build报错模块继续执行,报错信息,这个时候需要引入报错的模块kotlin-coroutines
继续看报错信息, 找到该模块并引入
项目终于全部跑通了
这里只是介绍了一下怎么排除错误,错误不可能全部重现,解决错误的思路就是看哪个包的东西缺失就引入哪个包,其实我们可以参考其他包来进行引入,比如我们看一下spring-web
的build.gradle
文件,参照着他的包引入,则基本不会报错
参考他的修改我们的gradle文件
这里你就会发现其实和我们平时引用spring没什么区别,最关键的包spring-core
和spring-context
包,只是之前导入的是jar包,现在导入的是模块,我们需要测试哪个功能引入对应的模块即可,最最核心的spring模块就是这两个。所以源码导入和jar包使用没什么区别。