Spring Boot源码中模块详解

一、源码

spring boot2.1版本源码地址:https://github.com/spring-projects/spring-boot/tree/2.1.x

二、模块

Spring Boot 包含许多模块,以下是一些简单的概述:

1,spring-boot

为Spring Boot其他部分功能提供主要的lib包,其中包含:
(1)SpringApplication类提供了静态便利的方法使编写独立的SpringApplication更加容易.它唯一的任务就是创建和刷新一个适当的Spring ApplicationContext.
(2)为嵌入式web应用选择一个容器(Tomcat、Jetty或者Undertow)
(3)对外部化配置的支持超级好
(4)ApplicationContext初始化很方便,包含默认支持合理的日志记录

2,spring-boot-autoconfigure

Spring Boot可以在classpath中配置大部分公共应该程序.仅仅一个@EnableAutoConfiguration注释就能触发Spring上下文的自动配置.
自动配置尝试推断哪些用户需要哪些bean.例如,如果HSQLDB在classpath中配置,并且用户没有配置任何的数据库连接,然而他们可能想定义一个内存数据库.
当用户开始自定义自己beans时,自动配置将始终退出.

3,spring-boot-starters

Starters是一组方便的依赖描述符,可以包含在你的应用程序中.
你可以为所有Spring和相关技术提供一站式服务,而无需搜索示例代码并复制大量的依赖描述符.
例如,如果你想开始使用Spring和JPA访问数据库,只需要在你的项目中包含spring-boot-starter-data-jpa依赖项,然后你就可以继续.

4,spring-boot-cli

spring命令行应用程序编译并运行Groovy源代码,使编写代码变的非常容易,从而使应用程序能够运行.
Spring CLI还可以监听文件,在文件更新时候自动编译和重启启动.

5,spring-boot-actuator

actuator endpoints允许你监视应用程序并且与其进行交互.
spring boot actuator提供了actuator endpoints所需的基础设施.
它包含对actuator endpoints的注释支持.
这个模块提供了许多端点,包括HealthEndpoint、EnvironmentEndpoint、BeanEndpoint等等.

6,spring-boot-actuator-autoconfigure

这个模块为actuator endpoints提供了基于classpath内容和一组属性的自动配置.
例如,如果Micrometer是在classpath中,它将自动配置MtricsEndpoing.它包含通过HTTP或JMX配置expose endpoints.
就像Spring Boot AutoConfigure一样,当用户开始自定义自己的beans时,它将退出.

7,spring-boot-test

这个模块包含核心项和注释,在测试应用程序的时候可能会有所帮助.

8,spring-boot-test-autoconfigure

像Spring Boot AutoConfigure模块,spring-boot-test-autoconfigure在classpath中为tests提供自动配置.
它包括许多注释,这些注释可以被用于自动配置需要测试的应用程序的一个片段.

9,spring-boot-loader

Spring Boot Loader提供秘密武器,允许你构建一个可以使用java-jar启动的jar文件.
通常情况下你不需要直接使用spring-boot-laoder,而是使用Gradle或者Maven 插件.

10,spring-boot-devtools

spring-boot-devtools模块提供开发时特性,例如自动重新启动,对于更流畅的应用开发经验.
在运行完整打包的应用时,将自动禁用开发工具.

Spring Boot源码中模块详解的更多相关文章

  1. Spring Boot源码(六):Bean的创建详解

    继续之前的项目: People加上无参构造方法: @Component public class People { // private User user; public People(){ Sys ...

  2. 曹工说Spring Boot源码(17)-- Spring从xml文件里到底得到了什么(aop:config完整解析【中】)

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  3. 曹工说Spring Boot源码(7)-- Spring解析xml文件,到底从中得到了什么(上)

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  4. 精尽Spring Boot源码分析 - Jar 包的启动实现

    该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Sprin ...

  5. 精尽Spring Boot源码分析 - @ConfigurationProperties 注解的实现

    该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Sprin ...

  6. 走进Spring Boot源码学习之路和浅谈入门

    Spring Boot浅聊入门 **本人博客网站 **IT小神 www.itxiaoshen.com Spring Boot官网地址:https://spring.io/projects/spring ...

  7. 曹工说Spring Boot源码(2)-- Bean Definition到底是什么,咱们对着接口,逐个方法讲解

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码系列开讲了(1)-- Bean Definition到底是什么,附spring思维导图分享 工程代码地址 思维导图地址 工程结构图: 正 ...

  8. Spring Boot源码分析-启动过程

    Spring Boot作为目前最流行的Java开发框架,秉承"约定优于配置"原则,大大简化了Spring MVC繁琐的XML文件配置,基本实现零配置启动项目. 本文基于Spring ...

  9. Spring Boot源码(八):Spring AOP源码

    关于spring aop的应用参见:Spring AOP-基于@AspectJ风格 spring在初始化容器时就会生成代理对象: 关于创建bean的源码参见:Spring Boot源码(六):Bean ...

随机推荐

  1. C#中多集合组合实现

    C#中多集合组合使用方法,主要用到 Enumerable.Join方法 var skuInfoList = new Dictionary<int, List<long>>(); ...

  2. Windows系统Apache下载和安装

    一.Apache的下载 1.访问Apache官网:https://httpd.apache.org 2.选择Windows版本下载 3.下载完成后解压缩,把文件放到自己想放的盘 二.Apache的安装 ...

  3. Redis相关知识整理

    Redis相关知识整理 1. Redis和MySQL的区别?a).mysql是关系型数据库,而redis是NOSQL,非关系型数据库.mysql将数据持久化到硬盘,读取数据慢,而redis数据先存储在 ...

  4. 安恒西湖论剑线下上午CTF部分题目WP

    简单的做了两个题,一道逆向,一道misc,其他题目,因为博主上课,时间不太够,复现时间也只有一天,后面的会慢慢补上 先说RE1,一道很简单的win32逆向,跟踪主函数,R或者TAB按几下, 根据esp ...

  5. 二维数组中的查找 - Java版 -简单二分查找 -<<剑指Offer>> -水题

    如题 (总结) -认真读题, 还WA了一次, https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e?tpId=13&am ...

  6. 压缩及解压命令gzip、bzip2、tar

    1. gzip 描述:压缩与解压缩 用法:gzip[选项]...[文件名称]... 选项:-d 解压 gzip hello.txt     # 文件压缩后名为hello.txt.gz gzip -d ...

  7. Markdown 设置字体大小颜色及背景色

    一.更改字体.大小.颜色 <font face="黑体">我是黑体字</font><font face="微软雅黑">我是微 ...

  8. fitnesse wiki界面设置变量

    有时候我们可能多组测试数据会到同一个值,这样我们就可以设置一个变量,修改时只需要修改一个地方即可,而不需要对每组测试数据的这列数据进行修改 如下图: (1)定义变量:!define A {10}  , ...

  9. Python微信操控(itchat)

    itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单. 开源地址 https://github.com/littlecodersh/ItChat 文档: https://itc ...

  10. shell随机数比较

    #!/bin/bash a=$(expr $RANDOM % ) #生成一到一百的随机数 echo $a #打印随机数 b= while true do let b++ echo "比较了第 ...