# [一] Spring 源码学习简介 内容概述
Spring源码系列是对Jack老师上课内容的笔记整理,其中包括上课笔记以及对视频内容的流程整理,对照视频跟进代码添加注释,过程虽然繁琐,但是一定会有收获,感谢期间遇到问题Jack老师耐心的解答。
在此引用Jack老师的话:没毛病吧,老铁,开始写笔记了。 知识点
Jack老师在视频里重点强调的部分会以知识点的方式总结出来。 Spring相关流程图和扩展内容会以 附: XXX文件单独整理。 Jack老师博客传送门
# [1] 为什么要学Spring 源码 提升自己的写代码能力 从全局考虑如何使代码变得灵活和可扩展 # [2] 如何学习Spring 源码 spring重新定义了JAVA spring源码是有一定难度的 如果想成为真正的高手,spring源码必须要攻克,不是危言耸听的 在学习期间,不管有多忙,课后一定要按照老师的讲解思路去理解课堂上讲解的内容 遇到不理解的一定要问,要反复去琢磨 spring源码这块,进大厂是必问的环节 # [3] Spring的历史 2002年10月,Rod Johnson发布《Expert One-on-One J2EE设计和开发》一书 2004年03月,Spring1.0发布 2006年10月,Spring2.0发布 2009年12月,Spring3.0发布 2013年12月,Spring4.0发布 2017年09月,Spring5.0发布 # [4] 准备工作 JDK1.8版本 spring 5.1.3.RELEASE最新版本 补一下Lambda表达式的知识 Spring源码下载 git clone --branch v5.1.3.RELEASE https://gitee.com/Z201/spring-framework.git
安装配置gradle,gradle需要支持JDK8的版本 到下载的spring源码路径执行gradle命令 gradlew :spring-oxm:compileTestJava
用idea打开spring源码工程,在idea中安装插件kotlin,重启Idea 把编译好的源码导入到工程中 # [5] 搭建Spring 项目 导入jar依赖,Spring中最核心的4个jar:
spring-beans spring-core spring-context spring-expression 一个最最简单的spring工程,理论上就只需要一个jar就够了
# [6] 开启 Spring 日志 一个空的spring工程是不能打印日志的,要导入spring依赖的日志jar
# [7] Spring中XSD引入 Spring中要引入自定义标签,必须要引入其对应的XSD文件。如:
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
在标签对应的jar包下面找到对应的Spring.schemas,在这个文件中就会有对应的XSD路径和命名空间。
# [8] Spring容器加载方式 类路径获取配置文件
ApplicationContext applicationContext= new ClassPathXmlApplicationContext("spring.xml"); 文件系统路径获取配置文件【绝对路径】
ApplicationContext applicationContext = new FileSystemXmlApplicationContext("E:\idea\public\springdemo\src\main\resources\spring.xml"); 无配置文件加载容器
ApplicationContext applicationContext = new AnnotationConfigApplicationContext("com.xx.jack"); Springboot加载容器
ApplicationContext applicationContext = new EmbeddedWebApplicationContext();