1.springCore模块的组成

    java程序,通过jar库,将众多的代码块(类资源)组合在一起,最终完成我们需要的功能。 通过查看项目的依赖情况,可以大致的推断该项目应该会具有哪些相应的能力。

    spring5是优秀的开源框架spring的第五代版本,已经有发行版,可用于生产,它的依赖如下:

spring5源码-springCore模块_spring

   浏览下来,感觉最重要的特性是,rxjava响应式编程  以及 基于 netty的 AIO通信;

2.springCore模块对Annotation的支持

     注解是javaEE5.0开始引入的,于此同时引入的有 反射机制等,该版本也是java语言里程碑版本,标识着语言到成熟。  

     注解 与 java的 类 以及 对象 有一个最大的区别是,它不支持继承体系。   当要对注解进行操作时,颇为不便,spirng提供了相关的API用于简化操作:

spring5源码-springCore模块_spring_02

   其中的:"融合"注解,便是解决 注解无法继承的一个解决思路。

3.springCore模块对环境的支持

spring5源码-springCore模块_re模块_03

   我们日常经常使用到的Environment接口,其实质为:PropertyResolver,可译为 属性解析器.

spring5源码-springCore模块_java_04

4.springCore模块对io的支持:

spring5源码-springCore模块_java_05

5.springCore模块对编码提供的支持

spring5源码-springCore模块_re模块_06

6.springCore模块对序列化的支持

spring5源码-springCore模块_spring_07

7.springCore模块对转换器提供的支持

spring5源码-springCore模块_java_08

8.springCore模块对任务的支持

spring5源码-springCore模块_spring_09

9.springCore模块对类型的支持

spring5源码-springCore模块_spring_10

10.spirngCore模块提供的重要接口:

spring5源码-springCore模块_java_11

11.springCore模块提供的重要工具:

spring5源码-springCore模块_re模块_12

12.springCore模块对cglib的支持:

   需要注意的是,spring仅仅在修改了部分(极少) AspectJ库的相应cglib的类,大部分的类均由Aspect厂商提供。  但是,我们实际时能够看到,在spring的源码中,是没有相应的类的。  这是因为,AspectJ的很多类 是包私有的,spring源码在打包时,通过插件将相应的类混入到了org.springframe的包中。

13.备注

   这些接口的实现类,仅限于Core模块,很多的实现均在子模块,且较为复杂,如果一直追溯便极容易迷失。因此,这里是以模块为单位,进行查看。

    源码查看时,并未选择遍历每一个具体的类,而是以接口为思路进行展开,更容易理解设计思路。