Spring Boot 框架介绍

2019-10-11 0 By admin

SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。

它基于Spring4.0设计,不仅继承了 Spring框架 原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。

另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

一、SpringBoot所具备的特征

  1. 可以创建独立的 Spring 应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs。
  2. 内嵌Tomcat、Jetty、Undertow等Web服务容器。
  3. 提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置。
  4. 当条件满足时,自动地装配 Spring 或第三方类库。
  5. 提供运维(Production-Ready)特性,如指标信息(Metrics)、健康检查和外部化配置。
  6. 绝对没有代码生成,不需要XML配置。

二、重要策略

SpringBoot 框架中还有两个非常重要的策略:开箱即用和约定优于配置。

2.1、开箱即用(Outofbox)

指在开发过程中,通过在Maven项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。

这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。

2.2、约定优于配置(Convention over configuration)

一种由 SpringBoot 本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。

这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。

三、SpringBoot 基本架构设计

SpringBoot 应用系统开发模板的基本架构设计从前端到后台进行说明。

前端常使用模板引擎,主要有FreeMarker和Thymeleaf,它们都是用Java语言编写的,渲染模板并输出相应文本,使得界面的设计与应用的逻辑分离。

SpringMVC框架用于数据到达服务器后处理请求;到数据访问层主要有Hibernate、MyBatis、JPA等持久层框架。

四、内嵌Web 容器介绍

大多数 Spring Boot 应用场景中,程序直接或间接地使用 SpringApplication API 引导应用。其中有结合嵌入式 Web 容器,对外提供HTTP服务。
如果从应用类型上划分,那么 Spring Boot 应用包括 Web 应用和非Web 应用。

  1. 其中非 Web 应用主要用于服务提供、调度任务、消息处理等场景。
  2. Web 应用类型在 Spring Boot 1.x 中有且仅有 Servlet 容器实现,包括传统的 Servlet 和 Spring Web MVC。
  3. 而从 Spring Boot 2.0 版本开始增加了 Reactive Web 容器实现,即 Spring 5.0 WebFlux,故 Spring Boot 2.0 在 SpringApplication API 上增加了 setWebApplicationType(WebApplicationType)方法,允许程序显式地设置Web 应用的枚举类型。
  4. 光指定 Web 应用类型还不够,还需要搭配 Spring Boot Starter 技术,直接或间接地引入相关的依赖,结合 Spring Boot 自动装配,再利用 Spring Boot 和 Spring Framework 的生命周期,创建并启动嵌入式的 Web 容器。

其中 Web 应用类型枚举类的成员 NONE 表示非Web 类型SERVLET 和 REACTIVE 分别代表 Servlet Web 和 Reactive Web
Servlet Web 的依赖为 spring-boot-starter-web,Reactive Web 的依赖为 spring-boot-starter-webflux。

总而言之,Spring Boot 应用采用嵌入式容器,独立于外部容器,对应用生命周期拥有完全自主的控制。