文章作者:Tyan
博客:noahsnail.com | CSDN | 简书
Part II 开始
如果你刚开始学习Spring Boot或通常所说的Spring,这部分就是为你准备的!这部分中我们回答了基本的"what?","how","why?"问题,并在安装说明中介绍Spring Boot。我们将构建第一个Spring Boot应用,讨论一些我们遵循的核心原则。
8. Spring Boot介绍
Spring Boot 使创建独立的、产品级的、基于Spring的应用变得更容易,你只需要运行run
即可。我们采用不变的Spring平台和第三方库,因此你可以几乎无差别的使用Spring Boot。大多数Spring Boot应用只需要很少的Spring配置。
你可以使用Spring Boot创建Java应用,用java-jar
或更传统的war包来部署应用。我们也提供了运行"Spring脚本"的命令行工具。
我们的主要目标是:
为所有Spring开发者提供一个从根本上更迅速可用的入门经验。
坚持开箱即用,当默认设置不满足需求时可以快速避免默认设置。
为具有许多类的工程提供一系列常用的非功能特性(例如嵌入式服务器、安全、度量、健康检查、外部配置)。
绝对没有XML配置代码产生和XML配置需求。
9. 系统需求
By default, Spring Boot 2.0.0.BUILD-SNAPSHOT requires Java 7 and Spring Framework 5.0.0.BUILD-SNAPSHOT or above. You can use Spring Boot with Java 6 with some additional configuration. See Section 80.11, “How to use Java 6” for more details. Explicit build support is provided for Maven (3.2+) and Gradle (1.12 or 2.x). Gradle 3 is not supported.
默认情况下,Spring Boot 2.0.0.BUILD-SNAPSHOT需要Java 7和Spring Framework 5.0.0.BUILD-SNAPSHOT及以上。你可以通过一些额外配置在Java 6下使用Spring Boot。更多细节请看80.11小节,"怎样使用Java 6"。明确的构建支持有Maven (3.2+)和Gradle (1.12 or 2.x),不支持Gradle 3。
Although you can use Spring Boot with Java 6 or 7, we generally recommend Java 8 if at all possible.
虽然你可以在Java 6或Java 7下使用Spring Boot,但我们建议尽可能的使用Java 8。
9.1 Servlet容器
下面的嵌入式servlet
容器支持开箱即用:
Name | Servlet Version | Java Version |
---|---|---|
Tomcat 8 | 3.1 | Java 7+ |
Tomcat 7 | 3.0 | Java 6+ |
Jetty 9.3 | 3.1 | Java 8+ |
Jetty 9.2 | 3.1 | Java 7+ |
Jetty 8 | 3.0 | Java 6+ |
Undertow 1.3 | 3.1 | Java 7+ |
你也可以部署Spring Boot应用到任何兼容Servlet 3.0+的容器。
10. 安装Spring Boot
Spring Boot可以和"经典"的Java开发工具一起使用,也可作为一个命令行工具来进行安装。不管你是需要Java SDK v.16还是更高版本,在开始之前你应该检查你当前安装的Java版本。
$ java -version
如果你是Java开发的新手,或你只想尝试Spring Boot,你可能首先想试一下Spring Boot CLI,否则,请读"经典"的安装说明。
虽然Spring Boot兼容Java 1.6,但可能的话,你应该考虑使用Java的最新版本。
10.1 Java开发者的安装说明
你可以使用Spring Boot像使用任何标准Java库一样。简单的在你的classpath
中包含恰当spring-boot-*.jar
即可。Spring Boot不需要任何特定的工具集成,因此你可以使用任何IDE或文本编辑器;Spring Boot应用没有什么特别的,你可以像其它的Java程序一样来运行和调试。
尽管你可以只拷贝Spring Boot的jars,但通常我们建议你使用一个支持依赖管理的构建工具(例如Maven或Gradle)。
10.1.1 Maven安装
Spring Boot兼容Apache Maven 3.2或以上。如果你没有安装Maven,你可以根据maven.apache.org的说明来安装。
在许多操作系统上Maven都能通过包管理器来安装。如果你是一个OSX Homebrew用户可以通过
brew install maven
安装。Ubuntu用户可以通过sudo apt-get install 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 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.0.BUILD-SNAPSHOT</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>
<!-- Add Spring repositories -->
<!-- (you don't need this if you are using a .RELEASE version) -->
<repositories>
<repository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/snapshot</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/snapshot</url>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
</project>
spring-boot-starter-parent
是使用Spring Boot的一种极好的方式,但它可能不是一直都合适的。有时你可能需要继承一个不同的父POM,或者你可能不喜欢我们的默认设置。请看13.2.2小节,『没有父POM的情况下使用Spring Boot』是一种可替代的解决方案,它使用了import
作用域。
10.1.2 Gradle安装
Spring Boot兼容Gradle 1.12或2.x。推荐使用2.14.1。不支持Gradle 3。如果你没有安装Gradle,你可以根据www.gradle.org/的介绍来安装。
Spring Boot依赖使用org.springframework.boot
groupId
。通常你的工程会声明一个或多个“Starters”依赖。Spring Boot提供了一个有用的Gradle插件用来简化依赖声明并创建可执行的jar包。
Gradle Wrapper
当你需要构建一个工程时,Gradle Wrapper提供了一种很好的方式来『获得』Gradle。它是一小段脚本和库,并随着你的代码一起提交来引导构建过程。更多细节请看https://docs.gradle.org/2.14.1/userguide/gradle_wrapper.html。
10.2 安装Spring Boot CLI
Spring Boot CLI是一个命令行工具,可以用来快速搭建基于Spring的原型。它允许你运行Groovy脚本,这意味着你有一个熟悉的类Java语法,没有很多的样本代码。
你不需要使用CLI来使用Spring Boot但它是开始得到一个基于Spring应用的最快方式。
10.2.1 手动安装
你可以从Spring软件仓库下载Spring CLI发行版:
最新的snapshot distributions也是可获得的。
一旦下载完成,按照存档INSTALL.txt中的 介绍来安装。总结:bin/
目录的.zip
文件中有一个spring
脚本(Windows中是spring.bat
),或者你可以使用java -jar
运行.jar
文件(这个脚本帮你确保正确设置classpath)。
10.2.2 使用SDKMAN!安装
SDKMAN! (The Software Development Kit Manager)能用来管理各种二进制SDKs的多个版本,包括Groovy和Spring Boot CLI。从sdkman.io中得到SDKMAN!并安装Spring Boot:
$ sdk install springboot
$ spring --version
Spring Boot v2.0.0.BUILD-SNAPSHOT
如果你在为CLI开发功能并向很容易的访问你够简单版本,按照这些额外的介绍去做。
$ sdk install springboot dev /path/to/spring-boot/spring-boot-cli/target/spring-boot-cli-2.0.0.BUILD-SNAPSHOT-bin/spring-2.0.0.BUILD-SNAPSHOT/
$ sdk default springboot dev
$ spring --version
Spring CLI v2.0.0.BUILD-SNAPSHOT
这将会安装一个名为dev
的本地spring
实例。它指向你的目标构建位置,因此你每次重新构建Spring Boot,spring
将是最新的。
按下面去做你会看到:
$ sdk ls springboot
================================================================================
Available Springboot Versions
================================================================================
> + dev
* 2.0.0.BUILD-SNAPSHOT
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
10.2.3 OSX Homebrew安装
如果你在Mac上使用Homebrew,安装Spring Boot CLI所有你需要做的是:
$ brew tap pivotal/tap
$ brew install springboot
Homebrew会在/usr/local/bin
目录安装spring
。
如果你没有看到公式,你安装的brew可能过时了。执行
brew update
并重新再试一次。
10.2.4 MacPorts安装
如果你在Mac上使用MacPorts,安装Spring Boot CLI所有你需要做的是:
$ sudo port install spring-boot-cli
10.2.5 命令行实现
Spring Boot CLI附带的脚本为BASH和zsh shells提供了命令行实现。你可以在任何shell中source
脚本(也称为spring
),或将它放在用户或系统范围内的bash完成初始化。在Debian系统中系统范围内的脚本是在/shell-completion/bash
目录中,当新shell启动时,目录下的所有脚本都被执行。如果你装了SDKMAN!,为了手动运行脚本,执行下面的命令:
$ . ~/.sdkman/candidates/springboot/current/shell-completion/bash/spring
$ spring <HIT TAB HERE>
grab help jar run test version
如果你想使用Homebrew或MacPorts安装Spring Boot CLI,命令行完成脚本会自动在shell中注册。
10.2.6 快速Spring CLI例子
这儿有一个真实的简单的web应用,你可以用来测试你的安装。创建一个文件叫app.groovy
:
@RestController
class ThisWillActuallyRun {
@RequestMapping("/")
String home() {
"Hello World!"
}
}
这儿有一个真实的简单的web应用,你可以用来测试你的安装。创建一个文件叫app.groovy
:
@RestController
class ThisWillActuallyRun {
@RequestMapping("/")
String home() {
"Hello World!"
}
}
当你第一次运行应用时它需要一段时间,因为要下载依赖。接下来运行会更快。
在你最喜欢的浏览器中输入localhost:8080,你应该会看到下面的结果:
Hello World!
10.3 从早期的Spring Boot升级
如果正在升级你的Spring Boot,检查project wiki中的『发布说明』。你将找到升级说明,说明中有每一次发布的特性列表。
为了升级现有的CLI,要使用合适的包管理命令(例如brew upgrade
),如果你手动安装的CLI,要按照标准的说明去做,为了移除旧的引用要记住更新你的PATH环境变量。