结构分析:
Spring-boot-project 下面有很多模块,如下:
该模块 47760 行代码(含测试代码),Spring boot 主要的库,提供了支持 Spring Boot 其他部分的功能,其中包括了:
SpringApplication
类,提供静态便捷方法,可以很容易写一个独立的 Spring 应用程序。它唯一的工作就是创造并更新一个合适的 SpringApplicationContext
ApplicationContext
初始化程序,包括对敏感日志记录默认值的支持该模块 18398 行代码(含测试代码),spring-boot-actuator 模块它完全是一个用于暴露自身信息的模块,提供了一个监控和管理生产环境的模块,可以使用 http、jmx、ssh、telnet 等管理和监控应用。审计(Auditing)、 健康(health)、数据采集(metrics gathering)会自动加入到应用里面。
该模块 16721 行代码(含测试代码),Spring Boot Actuator 提供了额外的自动配置功能,可以在生产环境中实现可即时部署和支持的功能,从而装饰你的应用。例如,如果您正在编写 JSON Web 服务,那么它将提供服务器,安全性,日志记录,外部配置,管理端点,审计抽象等等功能。如果您想关闭内置功能,或者扩展或替换它们,它也会变得非常简单。
该模块 51100 行代码(含测试代码), Spring Boot 可以根据类路径的内容配置大部分常用应用程序。单个@EnableAutoConfiguration
注释会触发 Spring上下文的自动配置。
自动配置尝试推断用户可能需要哪些 bean。例如,如果 HSQLDB
在类路径中,并且用户尚未配置任何数据库连接,则他们可能需要定义内存数据库。当用户开始定义他们自己的 bean 时,自动配置将永远远离。
该模块 9346 行代码(含测试代码),Spring 命令行应用程序编译并运行 Groovy 源代码,使得可以编写少量代码就能运行应用程序。Spring CLI 也可以监视文件,当它们改变时自动重新编译并重新启动。
该模块里面没有源码,只有所有依赖和插件的版本号信息。
该模块 9418 行代码(含测试代码),spring-boot-devtools 模块来使 Spring Boot 应用支持热部署,提高开发者的开发效率,无需手动重启 Spring Boot 应用。
该模块 671 行代码,springboot 参考文件。
该模块是其他项目的 parent,该模块的父模块是 spring-boot-dependencies。
该模块有 495 行代码,在 Spring Boot 2.0 中,许多配置属性被重新命名/删除,开发人员需要更新application.properties
/ application.yml
相应的配置。为了帮助你解决这一问题,Spring Boot 发布了一个新spring-boot-properties-migrator
模块。一旦作为该模块作为依赖被添加到你的项目中,它不仅会分析应用程序的环境,而且还会在启动时打印诊断信息,而且还会在运行时为您暂时迁移属性。在您的应用程序迁移期间,这个模块是必备的,完成迁移后,请确保从项目的依赖关系中删除此模块。
Starter POMs 是由很多方便的依赖集合组成,如果你需要使用某种技术,通过添加少量的jar就可以把相关的依赖加入到项目中去。
虽然你看得到有这么多 starter,但是却没有一行 Java 代码,意不意外?
这确实是 Spring Boot 自动配置的关键之处,后面我可以讲讲。
测试代码!有 10980 行代码。
自动配置的测试代码,有 6063 行代码。
spring-boot-antlib
Spring Boot AntLib 模块为 Apache Ant 提供了基本的 Spring Boot 支持。 您可以使用该模块创建可执行文件夹。 要使用该模块,您需要在 build.xml 中声明一个额外的 spring-boot 命名空间,如以下示例所示:
<project xmlns:ivy="antlib:org.apache.ivy.ant"
xmlns:spring-boot="antlib:org.springframework.boot.ant"
name="myapp" default="build">
...
</project>
您需要记住使用 -lib 选项启动 Ant,如以下示例所示:
ant -lib <folder containing spring-boot-antlib-2.1.0.BUILD-SNAPSHOT.jar>
样例 demo 比较多,大家看源码的时候可以拿这些现成 demo 测试。
本文主要分析了下 Spring boot 项目源码结构。包含 Spring boot 核心源码、样例 demo、测试。分析了项目的整体结构后,后面才能够有的放矢的去读源码。
虽然源码很难,但随着不断的探索,源码在你面前将会一览无遗,享受这种探索后的成就感!加油!自己!