Spring Boot是又Pivotal 团队提供的全新框架,其设计的目的是用来简化新Spring的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使得开发人员不在需要定义模板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域成为领导者 - 《百度百科:Spring Boot》
Spring Boot
是所有基于Spring Framework 5.0
开发的项目的起点。Spring Boot的设计是为了让你尽可能快的跑起来Spring应用程序并且尽可能减少你的配置文件。
从最根本上来说,Spring Boot并不是新的框架,而是提供了默认配置的很多框架的集合。它能够在构建任意项目的时候使用,并且基本不需要进行配置。Spring Boot遵循使用优于配置的理念来使得你的项目能够快速运行起来,而不必花大量时间在代码生成和XML强制配置上。
Spring构建的项目存在大量的配置,但这里配置都包含一个默认的习惯性配置。如果你修改了Spring Boot的全局配置文件,你相当于是在修改默认配置的配置值。
Spring Boot 特点
(1) 为所有Spring开发提供一个更快更广泛的入门体验。
(2) 零配置。无冗余代码生成和XML强制配置,遵循约定大于配置。
(3) 集成了大量常用的第三方库及其配置。Spring Boot为这三第三方库提供了不需要配置的开箱即用的能力。
(4) 提供一系列大型项目常用的非功能特性,如嵌入式服务器
、安全性
、度量
、运行状况检查
、外部化配置
等。
(5) Spring Boot不是Spring的替代者,Spring框架是通过IOC机制来管理Bean的。Spring Boot依赖Spring框架来管理对象依赖。Spring Boot并不是Spring的精简版,而是做好了各种产品级应用准备的Spring。
Spring Boot 所具备的特征
(1) 可以创建独立的Spring程序,并且基于Maven或Gradle插件,可以创建可执行的JARs和WARs。
(2) 内嵌Tomcat或者Jetty等Servlet等容器。
(3) 提供自动配置的starter项目对象模型(POMS)以简化Maven配置。
(4) 尽可能自动配置Spring容器。
(5) 提供准备好的特性,如指标
、健康检查
和外部化
配置。
(6) 绝对没有代码生成,不需要XML配置。
Spring Boot在应用中的角色
基于Spring Framework,用于构建Spring Cloud。
Spring Boot是基于Spring Framework来构建的,Spring Framework是一种J2EE框架。
Spring Boot可以快速构建Spring 应用。
Spring Cloud是构建好的Spring Boot分布式环境,即云应用。
Spring是两者的中流砥柱,起到了承上启下的作用。
环境准备
- JDK 1.8及以上
- Maven管理工具
- IDE
Mave英文译为"专家",是Apache下的一个纯Java开发的开源项目。基于项目对象模型(POM)的概念,它利用一个中央信息片段来管理一个项目的构建、报告和文档等步骤。
Maven是一个项目管理工具,可以对Java项目进行构建、依赖管理。
Spring Boot项目文件
pom.xml
默认的pom.xml长这样:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xpwi</groupId>
<artifactId>springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
其中<parent>
标签比较陌生,它配置的是Spring Boot的父依赖,有了<parent>
标签,当前项目才是Spring Boot项目。spring-boot-starter-parent
是一个特殊的starter,它用来提供相关的Maven默认依赖。在加上它之后,常用的包依赖就可以省略掉version
标签。
Spring Boot所提供的jar包依赖可以在本地Maven仓库下的repisitoryorgspringframeworkootspring-boot-dependencies2.1.0RELEASEspring-boot-dependencies-2.1.0.RELEASE.pom
文件中查看。
应用入口类SpringBootApplication.java
Spring Boot项目通常会有一个名为SpringBootApplication
的入口类,它有一个main方法,该方法即为标准的java应用的入口方法。
@SpringBootApplication
是Spring的核心注解,它是一个有三个注解组成的组合式注解。这三个注解包括:
@Configuration
@EnableAutoConfiguration
@ComponentScan
三者的作用如下:
@Configuration
同Spring,用来定义配置类,可替换XML配置。@EnableAutoConfiguration
让Spring Boot根据类路径中的jar包依赖为当前项目进行自动配置。@ComponentScan
同Spring,从定义的扫描路径中找出标示了需要装配的类自动装配到bean容器中。
SpringBoot还会自动扫描@SpringBootApplication
所在类的同级包以及下级包里的bean。因此入口类建议配置在groupID+artifactID
组合的包名下。
Spring配置文件
SpringBoot支持properties
文件和yaml
语言两种配置文件。SpringBoot使用两者之一作为全局配置文件。
yaml
是以数据为中心的语言,在配置数据的时候具有面向对象的特征。
重复一点,Spring Boot全局配置文件的作用是对一些默认配置的配置值进行修改。