Spring Boot 指南之 Hello World


简介

Spring Boot 使我们更方便得创建独立、工业级的以 Spring 为基础的应用。我们对 Spring 平台和第三方库持保留态度,所以我们可以以最小的代价运行程序。大多数 Spring Boot应用几乎不需要 Spring 配置。

你可以使用 Spring Boot 创建 Java 程序,并使用 java -jar 或者 war 文件来运行。我们也提供一种命令行工具,它可以运行 spring scripts。

我们的目标:

提供真正快速、广泛可用的 Spring 开发的体验。

坚持开箱即用原则,对需要特殊配置的方式持保留态度。

提供一系列对大型应用常见的特性(嵌入服务器、安全、健康检查等)。

杜绝生成冗余代码和 XML 配置。

系统要求

Spring Boot 2.0.3要求 Java 8 或 9,和 Spring Framework 5.0.7 或更高。Maven 3.2+ 和 Gradle 4 提供显性构建支持。

Servet 容器

NameServlet Version
Tomcat 8.53.1
Jetty 9.43.1
Undertow 1.43.1

安装指南

你可以以传统 Java 库的方式使用 Spring Boot,也就是把 spring-boot-*.jar 加入到classpath中。Spring Boot不要求任何工具整合,你可以用任何 IDE。

虽然你可以复制 Spring Boot jars,但还是推荐使用 Maven 或 Gradle。

安装 Maven

Spring Boot 兼容 Apache Maven 3.2 或更高。如果你还没安装 Maven,可以去 maven.apache.org 下载安装。

Spring Boot 依赖使用 org.springframework.boot 的 groupId。一般情况下,你的 Maven POM 文件会继承 spring-boot-starter-parent 项目,并对一个或更多的 Starters 声明以来。Spring Boot 同样提供一个可选的 Maven 插件来创建可运行的 jars。

以下展示了一个典型的 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.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.0.3.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>

spring-boot-starter-parent 是一个很棒的使用 Spring Boot 的方式,但它并不适用于所有情况。有些时候,你需要继承另一个父 POM 文件,或你压根不喜欢我们的默认设置。这时,请看Section 13.2.2, “Using Spring Boot without the Parent POM”使用 import 范围的另一个解决方案。

Gradle installation

安装 Spring Boot CLI

开发你的第一个 Spring Boot 应用

这一章描述如何开发一个简单的 Hello World web 应用,我们使用 Maven来构建这个项目。

先在命令行运行:

$ java -version

$ mvn -v

来确认是否安装完毕。

创建 POM 文件

<?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.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.0.3.RELEASE</version>
	</parent>

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

</project>

你可以运行 mvn package 来测试以上代码。

增加 Classpath 依赖

运行

$ mvn dependency:tree

可以看到,spring-boot-starter-parent 自身没有提供任何依赖。所以把以下代码添加的 pom.xml 文件的 parent 节点下。

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

再运行

$ mvn dependency:tree

可以看到一系列依赖包括 tomcat server,Spring Boot 自身。

写代码

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) throws Exception {
		SpringApplication.run(Example.class, args);
	}

}
@RestController 和 @RequestMapping 注解

对于 @RestController 来说,它首先是一个 web @Controller,所以 Spring 用它处理进入的 web 请求。它同时告诉 Spring 直接输出结果字符串给调用者。

@RequestMapping 注解提供一个路由信息,它告诉 Spring,任何由 / 路径来的 HTTP 请求都由 home 方法处理。

@RestController 和 @RequestMapping 注解是 Spring MVC 注解(它们不是 Spring Boot独有的)。

@EnableAutoConfiguaration 注解

第二个类注解是 @EnableAutoConfiguration。这个注解告诉 Spring 基于你的依赖,来猜测你希望如何设置 Spring。因为 spring-boot-starter-web 添加了 Tomcat 和 Spring MVC,Spring会认为你在开发 web 应用,然后就依此设置 Spring。

main 方法

最后一个部分是 main 方法,这是符合 Java 标准的应用入口。main 方法委托调用 Spring Boot 的 SpringApplication类的run方法。SpringApplication 启动应用,开启 Spring,开启自动配置好的 Tomcat。我们需要将 Example.class 传递给 run 方法,让 Spring知道谁是 Spring 组件。

运行 Spring Boot 应用

在项目根目录输入以下代码来开启应用。

mvn spring-boot:run

打开你的游览器,进入 localhost:8080,如果看到 Hello World,说明成功。按 Ctrl-c 关闭应用。

注:(此文档依据 Spring Boot 2.0.3 官方文档)