1、spring官网文档
源码学习过程可以参考别人的文章,但是还是要自己看看一手资料
学习入口:
https://spring.io/projects/spring-framework#learn
使用帮助文档:
https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html
2、Spring源码下载
最好使用的是通过git仓库下载下来的源码,用maven下载下来的源码不能进行编辑。自己选择一个合适的版本,建议阅读5.0以上
2、下载gradle
spring源码的编译工具,很简单,自己学习安装下就好,不用深入研究
安装工具:https://gradle.org/install/
3、导入代码到IDE中
3.1 JDK版本
根据官网的要求,使用1.8+。
3.2 maven版本
建议版本在3.3以上
3.3 IDE选择
建议使用idea
4、把源码运行起来
导入下载好的源码:用打开文件的方式,不要用import方式
4.1 编译源码
第一次可能会有点慢
4.2 新增测试模块
成功以后可以参看spring的文档新增个module,注意创建gradle的,不是maven
4.3 新增测试代码
测试bean
@Component
public class Person {
private String name = "zhansan";
private int age =15 ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
test方法
@Test
public void test_init_annotation(){
//初始化Spring容器,并从容器中获取bean
ApplicationContext application = new AnnotationConfigApplicationContext(Person.class);
Person person = (Person) application.getBean("person");
System.out.println(person.getName()+","+person.getAge());
}
结果成功
5、源码阅读范围
给自己定个目标,到底我阅读源码是为什么,在后续的学习中自己找答案
5.1 spring的bean是如何初始化的
如何从一个bean标签/一个注解组件编程Spring容器中的一个初始化的bean
5.2 spring的两点特点DI和AOP是如何实现的
5.3 我能对Spring做什么扩展?
5.4 大家都说Spring很牛,他到底牛在哪里?
5.5 研究完Spring源码,学到了什么?