一 springboot的需求调研、需求分析(即应用场景)
- 开发中如果使用spring、springmvc、spring集成第三方框架(如springmvc/mybatis等),都需要编写大量的xml配置文件。
二 框架的设计思想
-
不需要配置文件的Spring+SpringMVC:SpringBoot 就相当于,不需要配置文件的Spring+SpringMVC,或者说快速使用Spring+SpringMVC的这个一个框架。Spring Boot 框架对此开发过程进行了革命性的颠覆,完全抛弃了繁琐的 xml 配置过程,采用大量的默认配置简化我们的开发过程。说白了,就是说:springboot简化了各个框架与spring+springmvc整合的过程。那些整合需要的对象已经默认帮你配置好;那些框架所包含的重要的对象也已经默认帮你创建好,拿来用就行了。
-
核心IOC容器:springboot就是为了我们更方便地使用spring、springmvc、第三方框架整合,所以springboot的思想和spring是一样的,主要就是一个IOC容器。
-
特点:
-
Create stand-alone Spring applications
创建spring应用。注意是什么应用呀?spring应用吧,所以说你用springboot实际上用的就是spring吧。
-
Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
内嵌的tomcat、jetty、Underto服务器。 springboot程序中默认内嵌的是tomcat服务器,那就意味着我们不用单独安装tomcat服务器,使用springboot程序内嵌的tomcat服务器,我们就能跑web应用。说白了,就是能够直接使用 java main 方法启动内嵌的 Tomcat 服务器运行 Spring Boot 程序,不需要部署 war 包文件(使用springboot,web应用程序不需要部署war包)。
-
Provide opinionated 'starter' dependencies to simplify your build configuration
提供了starter起步依赖,简化应用的配置。A套餐、B套餐、C套餐,包含我们想吃喝的所有东西。。这个starter呢,我们称为起步依赖,starter是依赖的一个名字。起步依赖是指:比如以前我们使用MyBatis框架 , 需要在Spring项目中,使用xml文件去配置MyBatis的一些重要对象( SqlSessionFactory , Dao的代理对象等)。但在SpringBoot项目中,我们只要在pom.xml里面,加入一个 mybatis-spring-boot-starter依赖。加入mybatis-spring-boot-starter依赖后,有关MyBatis的一些重要对象( SqlSessionFactory , Dao的代理对象等)的配置(创建),就已经配置(创建)好了,就已经放到容器(spring容器)中了,就能用了,不用我们再写xml进行配置了。总的来说,xxx-xxx-xxx-starter就是把我们要整合过来的技术所需要的重要对象都给你配置好了,就达到简化配置,降低整合的难度。
-
Automatically configure Spring and 3rd party libraries whenever possible
尽可能去配置spring和第三方库;叫做自动配置(就是把spring中的,第三方库中的对象都创建好,放到容器中, 开发人员可以直接使用)。尽可能去配置spring指的是:在springboot项目中会把spring框架要使用的重要对象、重要配置都已经配置好了,我们就不用配置了,我们就可以直接使用spring(spring freemark)了。尽可能去配置第三方库springmvc指的是:我们在使用springmvc时做开发时,我们需要配置中央调度器吧,而在springboot项目中已经把springmvc的中央调度器给配置好了,我们就不用配置了。
-
通过springboot的“起步依赖+自动配置”的相互配合,就可以大大减化了spring与第三方库(如mybatis等)的整合过程、大大提高了spring和第三方库的使用速度。springboot通过“起步依赖+自动配置”,能够实现我们需要的一些对象的简化使用,不用我们写相关的配置文件进行配置了。
-
Provide production-ready features such as metrics, health checks, and externalized configuration
提供了健康检查, 统计,外部化配置等功能。在springboot项目还自带一些功能,如健康检查功能:会检查我们的springboot应用是不是正常运转的;如统计功能:springboot项目的一些统计信息,比如一些什么什么时长呀等等。如外部化配置功能:即在我们springboot项目代码之外也可以配置数据,比如config.properties的编写、配置、取值(键值对)。
-
Absolutely no code generation and no requirement for XML configuration
不用生成代码, 不用使用xml,做配置。也就是说,在springboot项目中尽可能地不用生成别的代码,也尽可能地不使用xml做配置。
三 springboot体系结构
![](https://img-blog.csdnimg.cn/img_convert/1f5079ff4072b14101a479e4ee3ee394.png)
![](https://img-blog.csdnimg.cn/img_convert/cd27627506ce6f8c90a8c2ff343dde06.png)
![](https://img-blog.csdnimg.cn/20190906112625438.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9oZW1pbi5ibG9nLmNzZG4ubmV0,size_16,color_FFFFFF,t_70)
参考:
springboot体系结构的搜索结果_百度图片搜索 (baidu.com)
springboot体系结构的搜索结果_百度图片搜索 (baidu.com)
dg微服务架构实战