关注我

转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/04/15/springboot2_code/

项目结构

结构分析:

  • Spring-boot-project 核心代码,代码量很多(197508 行)
  • Spring-boot-samples 一些样例 demo,代码量不多(9685 行),蛮有用的
  • Spring-boot-samples-invoker 里面无代码
  • Spring-boot-tests 测试代码(1640 行)

spring-boot-project

Spring-boot-project 下面有很多模块,如下:

Spirng-boot

该模块 47760 行代码(含测试代码),Spring boot 主要的库,提供了支持 Spring Boot 其他部分的功能,其中包括了:

  • SpringApplication类,提供静态便捷方法,可以很容易写一个独立的 Spring 应用程序。它唯一的工作就是创造并更新一个合适的 SpringApplicationContext
  • 带有可选容器的嵌入式 Web 应用程序(Tomcat,Jetty 或 Undertow)
  • 一流的外部配置支持
  • 便捷ApplicationContext初始化程序,包括对敏感日志记录默认值的支持

spring-boot-actuator

该模块 18398 行代码(含测试代码),spring-boot-actuator 模块它完全是一个用于暴露自身信息的模块,提供了一个监控和管理生产环境的模块,可以使用 http、jmx、ssh、telnet 等管理和监控应用。审计(Auditing)、 健康(health)、数据采集(metrics gathering)会自动加入到应用里面。

spring-boot-actuator-autoconfigure

该模块 16721 行代码(含测试代码),Spring Boot Actuator 提供了额外的自动配置功能,可以在生产环境中实现可即时部署和支持的功能,从而装饰你的应用。例如,如果您正在编写 JSON Web 服务,那么它将提供服务器,安全性,日志记录,外部配置,管理端点,审计抽象等等功能。如果您想关闭内置功能,或者扩展或替换它们,它也会变得非常简单。

spring-boot-autoconfigure

该模块 51100 行代码(含测试代码), Spring Boot 可以根据类路径的内容配置大部分常用应用程序。单个@EnableAutoConfiguration注释会触发 Spring上下文的自动配置。

自动配置尝试推断用户可能需要哪些 bean。例如,如果 HSQLDB在类路径中,并且用户尚未配置任何数据库连接,则他们可能需要定义内存数据库。当用户开始定义他们自己的 bean 时,自动配置将永远远离。

spring-boot-cli

该模块 9346 行代码(含测试代码),Spring 命令行应用程序编译并运行 Groovy 源代码,使得可以编写少量代码就能运行应用程序。Spring CLI 也可以监视文件,当它们改变时自动重新编译并重新启动。

spring-boot-dependencies

该模块里面没有源码,只有所有依赖和插件的版本号信息。

spring-boot-devtools

该模块 9418 行代码(含测试代码),spring-boot-devtools 模块来使 Spring Boot 应用支持热部署,提高开发者的开发效率,无需手动重启 Spring Boot 应用。

spring-boot-docs

该模块 671 行代码,springboot 参考文件。

spring-boot-parent

该模块是其他项目的 parent,该模块的父模块是 spring-boot-dependencies。

spring-boot-properties-migrator

该模块有 495 行代码,在 Spring Boot 2.0 中,许多配置属性被重新命名/删除,开发人员需要更新application.properties/ application.yml相应的配置。为了帮助你解决这一问题,Spring Boot 发布了一个新spring-boot-properties-migrator模块。一旦作为该模块作为依赖被添加到你的项目中,它不仅会分析应用程序的环境,而且还会在启动时打印诊断信息,而且还会在运行时为您暂时迁移属性。在您的应用程序迁移期间,这个模块是必备的,完成迁移后,请确保从项目的依赖关系中删除此模块。

spring-boot-starters

Starter POMs 是由很多方便的依赖集合组成,如果你需要使用某种技术,通过添加少量的jar就可以把相关的依赖加入到项目中去。

虽然你看得到有这么多 starter,但是却没有一行 Java 代码,意不意外?

这确实是 Spring Boot 自动配置的关键之处,后面我可以讲讲。

spring-boot-test

测试代码!有 10980 行代码。

spring-boot-test-autoconfigure

自动配置的测试代码,有 6063 行代码。

spring-boot-tools

  • 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>
  • Spring-boot-autoconfigure-processor

    spring boot 自动配置的核心类

  • Spring-boot-configuration-metadata

    Spring boot 配置元数据

  • Spring-boot-configuration-processor

    spring boot 配置的核心

  • Spring-boot-gradle-plugin

    Spring Boot Gradle 插件在 Gradle 中提供了 Spring Boot 支持,可以打包成可执行 jar 或 war ,运行 Spring Boot 应用程序,并使用 spring-boot-dependencies 提供的依赖关系管理。 它需要 Gradle 4.0 或更高版本。

  • Spring-boot-maven-plugin

    Spring Boot Maven Plugin 在 Maven 中提供了 Spring Boot 支持,让您可以打包成可执行 jar 或 war 应用,并“就地”运行应用程序。 要使用它,你必须使用 Maven 3.2(或更高版本)。

  • Spring-boot-loader

    spring-boot-load 模块通过自定义 jar 包结构,自定义类加载器,优雅的实现了嵌套 jar 资源的加载,通过打包时候重新设置启动类和组织 jar 结构,通过运行时设置自定义加载器来实现嵌套 jar 资源加载。

  • Spring-boot-loader-tools

    spring-boot-load 模块的工具模块

  • Spring-boot-test-support

    测试

spring-boot-samples

样例 demo 比较多,大家看源码的时候可以拿这些现成 demo 测试。

spring-boot-tests

相关文章

1、Spring Boot 2.0系列文章(一):Spring Boot 2.0 迁移指南

2、Spring Boot 2.0系列文章(二):Spring Boot 2.0 新特性详解

3、Spring Boot 2.0系列文章(三):Spring Boot 2.0 配置改变

4、Spring Boot 2.0系列文章(四):Spring Boot 2.0 源码阅读环境搭建

5、Spring Boot 2.0系列文章(五):Spring Boot 2.0 项目源码结构预览

6、Spring Boot 2.0系列文章(六):Spring boot 2.0 中 SpringBootApplication 注解详解

总结

本文主要分析了下 Spring boot 项目源码结构。包含 Spring boot 核心源码、样例 demo、测试。分析了项目的整体结构后,后面才能够有的放矢的去读源码。

最后

虽然源码很难,但随着不断的探索,源码在你面前将会一览无遗,享受这种探索后的成就感!加油!骚年!

转载于:https://www.cnblogs.com/zhisheng/p/8934501.html

Spring Boot 2.0系列文章(五):Spring Boot 2.0 项目源码结构预览相关推荐

  1. Spring Boot 2.0系列文章(四):Spring Boot 2.0 源码阅读环境搭建

    前提 前几天面试的时候,被问过 Spring Boot 的自动配置源码怎么实现的,没看过源码的我只能投降��了. 这不,赶紧来补补了,所以才有了这篇文章的出现,Spring Boot 2. 0 源码阅 ...

  2. 基于spring boot的邮件微服务消息中间件设计与实现 毕业论文+系统功能图v1.0.vsdx+项目源码

    下载地址:https://download.csdn.net/download/m0_63680064/36065411 项目介绍: 基于spring boot的邮件微服务消息中间件设计与实现 毕业论 ...

  3. 【java毕业设计】基于Spring Boot+mysql的口腔管理平台系统设计与实现(程序源码)-口腔管理平台

    基于Spring Boot+mysql的腔管理平台系统设计与实现(程序源码+毕业论文) 大家好,今天给大家介绍基于Spring Boot+mysql的腔管理平台系统设计与实现,本论文只截取部分文章重点 ...

  4. GDB 源码分析系列文章五:动态库延迟断点实现机制

    系列文章: GDB 源码分析系列文章一:ptrace 系统调用和事件循环(Event Loop) GDB 源码分析系列文章二:gdb 主流程 Event Loop 事件处理逻辑详解 GDB 源码分析系 ...

  5. 积少成多 Flash(ActionScript 3.0 Flex 3.0) 系列文章索引

    [源码下载] 积少成多 Flash(ActionScript 3.0 & Flex 3.0) 系列文章索引 作者:webabcd Flash 之 ActionScript 3.0  1.积少成 ...

  6. Asp.net MVC2.0系列文章-编辑和删除新闻操作

    上一篇文章,我们简单地完成了新闻内容的展示功能(Asp.net MVC2.0系列文章-显示列表和详细页面操作),此篇文章,我们使用Asp.net MVC2.0实现新闻记录的编辑和删除功能. 创建Vie ...

  7. spring源码分析第五天------springAOP核心原理及源码分析

    spring源码分析第五天------springAOP核心原理及源码分析 1. 面向切面编程.可以通过预 编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术 切面(A ...

  8. 基于spring boot的毕业设计论文选题申报管理系统设计与实现 毕业论文+项目源码、

    下载地址:https://download.csdn.net/download/ouyangxiaobai123/22679732 项目介绍: 基于spring boot的毕业设计论文选题申报管理系统 ...

  9. Struts 2.0系列文章

    Struts 2.0系列文章 http://www.blogjava.net/max/archive/2006/10/25/77157.html 需要深入了解这些标志的朋友,可以到以下查看以下网址: ...

  10. B2C商城项目源码,基于Java开发的高可用分布式B2C商城系统,Java+Spring MVC+Dubbo+Zookeeper+MySQL+Redis+FastDFS+Nginx+Solr

    目录 前言 B2C商城-AIYOU 一.项目总体架构 二.系统软硬件设施总体规划 1.系统服务规划 2.应用服务规划 3.应用系统域名规划 三.系统运行环境构建 四.项目数据库创建 五.项目拉取 六. ...

最新文章

  1. hdu1394线段树点修改,区间求和
  2. Javascript元编程创建DOM节点
  3. maven手动安装ojdbc14(oracle jdbc驱动)至本地maven仓库
  4. 图片优化之下一代图片格式WebP和AVIF
  5. 【编程题目】复杂链表的复制☆
  6. mysql获取相隔时间段的数据
  7. 【转】WCF、WebAPI、WCFREST、WebService之间的区别
  8. 静态注册BroadcastReceiver的注销问题
  9. 字符流的抽象类 reader writter java
  10. iOS 处理后台返回的json(或NSDictionary)形式字符串
  11. qq红包裂变式引流?QQ群红包裂变吸粉引流
  12. html超链接调用php,html网页超链接怎么做
  13. redis应用之安装配置介绍
  14. netlink使用简介
  15. UC浏览器怎样收藏视频?UC浏览器收藏视频的方法
  16. 2021周记07:新的一年正式开始
  17. 计算机按某些键进入用户界面,电脑开机时按什么键进入bios界面
  18. 常说的软件声卡指的是软件吗?
  19. WordPress 简约主题mkBlog v2.2下载
  20. 2016,解密百度排名规则与算法

热门文章

  1. 【渝粤教育】国家开放大学2018年春季 8601-22T燃气工程概论 参考试题
  2. 【渝粤教育】国家开放大学2018年春季 8662-22T特色课(1) 参考试题
  3. 经典机器学习系列(十二)【学习排序】
  4. css选择器思维导图
  5. Java---SSH(MVC)面试
  6. codevs 1683 车厢重组
  7. Windows安装及配置MongoDB
  8. 黑马程序员——C语言基础 字符串
  9. Spring 的 IOC原理
  10. 关于easyui还有一个问题:easyui的开发者是国人?