目录

  • 1. 入门知识
  • 1. 介绍Spring Boot
  • 2. 系统环境要求
  • 3. 安装Spring Boot
  • 3.1 使用Java开发的安装说明
  • 3.1.1 使用Maven安装
  • 3.1.2 使用Gradle安装(略)
  • 3.2 安装Spring Boot CLI
  • 3.2.1 手动安装
  • 3.2.2 使用SDKMAN等各种方式的安装方法(略)
  • 3.2.3 快速使用CLI事例
  • 4. 开发第一个Spring Boot的应用程序
  • 4.1 创建POM
  • 4.2 添加Classpath依赖
  • 4.3 编写代码
  • 4.3.1 @RestController 和 @RequestMapping 注解
  • 4.3.2 main方法
  • 4.4 运行事例
  • 4.5 创建可执行Jar


*本篇主要是根据Spring Boot Reference Guide(Spring Boot官方参考指南),进行逐步学习,一切以官方文档为准。有不对之处欢迎斧正。
  首先大致介绍一下Spring Boot的这篇官方文档大致讲的内容框架。这篇文档总共分了十个部分,分别是:
  1. Spring Boot Documentation --Spring Boot文档介绍,也就是介绍这个文档中都有哪些内容
  2. Getting Started --入门知识,关于使用Spring Boot前需要做哪些准备,及搭建一个简单的应用
  3. Using Spring Boot --使用Spring Boot,包含系统构建,代码开发,文件配置,注解使用,依赖注入,运行你的应用的几种方法,开发工具
  4. Spring Boot features --Spring Boot的特征,包含SpringApplication、Externalized Configuration、Profiles、日志、国际化、JSON、开发Web应用程序、安全、Sql数据库的使用、NoSql数据库的使用、各种缓存的配置、消息、使用RestTemplate和WebClient调用rest服务、校验、发送Email、JTA分布式事务的使用、Hazelcast分布式的使用、Quartz定时器、任务执行和调度、Spring的集成、Spring Session、JMX的监控和管理、测试、web套接字、web服务、自定义注解、Kotlin(一种静态编程语言)的使用。
  5. Spring Boot执行器:生产上的功能
  6. 部署Spring Boot应用程序
  7. Spring Boot CLI
  8. 搭建插件工具
  9. 各种使用指南
  10. 附件
  
  由于第1部分是关于文档的介绍说明,因此直接跳过第一章,从第2部分开始。

1. 入门知识

如果之前未接触过Spring Boot则从本章开始学习,本章介绍了如何使用,如何搭建简单的SpringBoot框架,并含有一些核心的原则。

1. 介绍Spring Boot

Spring Boot可以轻松创建可以运行的独立的,生产级的基于Spring的应用程序。我们对Spring平台和第三方库进行了一种自动的配置,这样您就可以轻松上手了。大多数Spring Boot应用程序只需要很少的Spring配置。
  我们的目标:

  • 为所有Spring的开发提供更快的入门体验
  • 开箱即用
  • 提供大型项目(例如嵌入式服务器、安全性、度量标准、运行状况检查和外部化配置)通用的一系列非功能性功能。
  • 没有代码生成,也不需要配置xml

2. 系统环境要求

  • 使用java 8
  • maven 3.3以上
  • Tomcat 9.0
  • Jetty 9.4

可以将Spring Boot应用程序部署到任何Servlet 3.1+兼容容器。

3. 安装Spring Boot

3.1 使用Java开发的安装说明

你可以像使用标准Java库一样使用Spring Boot, 只需要在classPath中包含相应的spring-boot - * .jar文件,Spring Boot不需要任何特殊工具集成,所以你可以使用任何IDE或文本编辑器。此外,Spring Boot应用程序没有什么特别之处,因此您可以像运行任何其他Java程序一样运行和调试Spring Boot应用程序。
  虽然您可以复制Spring Boot jar,但我们通常建议您使用支持依赖关系管理的构建工具(例如Maven或Gradle)

3.1.1 使用Maven安装

Spring Boot依赖项使用 org.springframework.boot groupId。通常,您的Maven POM文件继承自spring-boot-starter-parent项目,并声明对一个或多个“Starters”的依赖关系。 Spring Boot还提供了一个可选的Maven插件来创建可执行jar。
  如下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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.example</groupId>
	<artifactId>myproject</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<!-- Inherit defaults from Spring Boot -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.4.RELEASE</version>
	</parent>

	<!-- Add typical dependencies for a web application -->
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies>

	<!-- Package as an executable jar -->
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

***在pom中继承spring-boot-starter-parent是多数情况下都可使用的好方案,但是也有其他方案可以使用,请参见第13.2.2节“使用不带父POM的Spring Boot”作为使用导入范围的替代解决方案。

3.1.2 使用Gradle安装(略)

3.2 安装Spring Boot CLI

Spring Boot CLI是一个命令行工具,你可以使用它快速运行Groovy脚本(初学者不用了解),从而来使用Spring Boot。当然你也可以不使用CLI,但是这个种方式是最快捷的使用方法。

3.2.1 手动安装

您可以从Spring软件库下载Spring CLI发行版:

  • spring-boot-cli-2.1.4.RELEASE-bin.zip   下载完成后,解压并参考文件夹中的INSTALL.txt文件,配置环境变量,SPRING_HOME=你解压的位置,配置PATH=%SPRING_HOME%/bin
3.2.2 使用SDKMAN等各种方式的安装方法(略)
3.2.3 快速使用CLI事例

首先,创建一个名为app.groovy的文件,如下所示

@RestController
class ThisWillActuallyRun {
	@RequestMapping("/")
	String home() {
		"Hello World!"
	}
}

然后使用命令行运行它,如下
$ spring run app.groovy *应用程序的第一次运行速度很慢,因为下载了依赖项。后续运行要快得多
运行完,打开浏览器,输入localhost:8080,屏幕显示Hello World!则表示已安装成功。

4. 开发第一个Spring Boot的应用程序

搭建一个简单的入门程序,介绍里面的主要功能,使用Maven构建这个项目。
  请确保java和maven版本为java8和maven3.3以上。

4.1 创建POM

新建文件夹命名为myproject,这个名词和pom中的artifactId相同,作为项目名称使用。然后在此文件夹下新建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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.example</groupId>
	<artifactId>myproject</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.4.RELEASE</version>
	</parent>

	<!-- Additional lines to be added here... -->

</project>

在项目文件夹下使用命令mvn package进行打包测试。会在target文件夹下生成jar文件。现在你可以将此项目导入到IDE中也可以使用纯文本编辑器。

4.2 添加Classpath依赖

Spring Boot提供了许多“Starters(启动器)”,可以将这些jar包添加到类路径中。我们的4.1的示例应用程序已经在POM的父节中使用了spring-boot-starter-parent。 spring-boot-starter-parent是一个特殊的启动器,提供有用的Maven默认值。它还提供了一个依赖项管理部分,以便您可以省略自己再添加依赖项。
  其他“Starters(启动器)”提供了在开发特定类型的应用程序时可能需要的依赖项。由于我们正在开发Web应用程序,因此我们添加了一个spring-boot-starter-web依赖项。在此之前,我们可以通过运行以下命令来查看当前的内容:

$ mvn dependency:tree

[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT

mvn dependency:tree //打印项目依赖项;我们看到spring-boot-starter-parent并没有依赖任何其他jar包。现在编辑您的pom.xml并在父节下面添加spring-boot-starter-web依赖项:

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
</dependencies>

再次运行mvn dependency:tree,你可以看到现在有许多其他依赖项,包括Tomcat Web服务器和Spring Boot本身。如下图

spring boot 分析word_spring boot 分析word

4.3 编写代码

由于Maven的编译来源于src/main/java文件夹下,因此我们需要在项目下新建src/main/java/Example.java

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotation.*;

@RestController
@EnableAutoConfiguration
public class Example {

	@RequestMapping("/")
	String home() {
		return "Hello World!";
	}

	public static void main(String[] args) {
		SpringApplication.run(Example.class, args);
	}

}

虽然这里的代码不多,后续章节中有很多代码会一一介绍。

4.3.1 @RestController 和 @RequestMapping 注解
  1. @RestController:类级别注解,让Spring在处理传入的web请求时会考虑这个类,并且告诉Spring返回的结果是字符串类型的。
  2. @RequestMapping:提供“路由”信息,它告诉Spring,任何带有/ path的HTTP请求都应该映射到home方法
    这两个注解都是SpringMVC的注解,不是SpringBoot特有的。
  3. @EnableAutoConfiguration:类级别注解,告诉Spring Boot根据你添加的jar依赖关系“猜测”你想要如何配置Spring
4.3.2 main方法

代码中的最后部分是main方法,这只是遵循应用程序入口点的Java约定的标准方法。我们的main方法通过调用run来委托Spring Boot的SpringApplication类。 SpringApplication引导我们的应用程序,启动Spring,然后启动自动配置的Tomcat Web服务器。我们需要将Example.class作为参数传递给run方法,以告诉SpringApplication是主要的Spring组件。 args数组也被传递以公开任何命令行参数。

4.4 运行事例

由于使用了spring-boot-starter-parentpom,所以我们可以在项目文件夹下使用:mvn spring-boot:run,进行启动。启动完在浏览器中输入localhost:8080,会打印出Hello World!

4.5 创建可执行Jar

在pom.xml中添加以下代码

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
</build>

使用命令行:mvn package进行打包,在target下用命令行:java -jar target/myproject-0.0.1-SNAPSHOT.jar运行,使用ctrl-c退出运行。