您的位置:首页 > 编程语言 > Java开发

Spring Boot文档(003)-第二部分

2017-08-21 00:00 435 查看
摘要: Spring boot 入门

II. 入门

如果你刚刚开始使用Spring Boot,或者是“Spring”,这是你的一部分!在这里我们回答基本的“什么?”,“怎么样”和“为什么?”的问题。你会发现一个详细的介绍Spring Boot和安装说明。然后,我们将构建我们的第一个Spring Boot应用程序,然后我们再讨论一些核心原则。

8. 介绍Spring Boot

Spring Boot可以轻松创建可以“运行”的独立的,生产级的基于Spring的应用程序。我们对Spring平台和第三方库有自己的看法,所以开始你不要觉得奇怪。大多数Spring Boot应用程序需要很少的Spring配置。

您可以使用Spring Boot创建可以使用java -jar 或传统的war部署的Java应用程序。我们还提供一个运行“spring脚本”的命令行工具。

我们的主要目标是:

为所有的Spring开发人员提供一个更快,更广泛的入门体验。

开始使用开箱即用的配置(采用默认配置),但随着需求也可以调整配置自己需要的值。

提供大量项目通用的一系列非功能特性(例如嵌入式服务器,安全性,指标,健康检查,外部化配置)。

绝对没有代码生成,也不需要XML配置。

9. 系统要求

默认情况下,Spring Boot 1.5.6.RELEASE需要Java 7和Spring Framework 4.3.10.RELEASE或更高版本。您可以使用Spring Boot与Java 6进行一些其他配置。有关详细信息请参见84.11节“如何使用Java 6”。为Maven(3.2+)和Gradle 2(2.9或更高版本)和3提供了显式构建支持。

*虽然您可以使用Spring 6或7,但我们通常推荐Java 8。

9.1. Servlet容器

以下嵌入式servlet容器可直接是使用:

名称
Servlet版本
Java版本
Tomcat 8
3.1
Java 7+
Tomcat 7
3.0
Java 6+
Jetty9.3
3.1
Java 8+
Jetty9.2
3.1
Java 7+
Jetty8
3.0
Java 6+
Undertow 1.3
3.1
Java 7+
您还可以将Spring Boot应用程序部署到任何Servlet 3.0+兼容容器。

10. 安装 Spring Boot

Spring Boot可以与“经典”Java开发工具一起使用或作为命令行工具安装。无论如何,您将需要Java SDK v1.6或更高版本。您应该在开始之前检查当前的Java安装:

$ java -version

如果您是Java开发的新手,或者您只想尝试使用Spring Boot,您可能需要首先尝试使用Spring Boot CLI,否则,请阅读“经典”安装说明。

*虽然Spring Boot与Java 1.6兼容,如果可能,您应该考虑使用最新版本的Java。

10.1. Java开发人员的安装说明

您可以使用与任何标准Java库相同的方式使用Spring Boot。只需
spring-boot-*.jar
在您的类路径中包含相应的文件。Spring Boot不需要任何特殊的工具集成,所以可以使用任何IDE或文本编辑器; 并且Spring引导应用程序没有什么特别之处,因此您可以像任何其他Java程序一样运行和调试。

虽然您可以复制Spring Boot jar,但我们通常建议您使用支持依赖关系管理的构建工具(如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引导依赖使用
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>

<! - 继承自Spring Boot  - >
<parent>
<groupId>org.springframework.boot </ groupId>
<artifactId> spring-boot-starter-parent </ artifactId>
<version> 1.5.6.RELEASE < / version>
</ parent>

<! - 添加Web应用程序的典型依赖关系 - >
<dependencies>
<dependency>
<groupId> org.springframework.boot </ groupId>
<artifactId> spring-boot-starter-web </ artifactId>
</ dependency>
</dependencies>

<! - 作为可执行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继承,或者您可能不喜欢我们的默认设置。请参见 13.2.2节“使用不带父POM的Spring Boot”作为使用
import
范围的替代解决方案。

10.1.2. Gradle安装

Spring Boot与Gradle 2(2.9或更高版本)和Gradle 3兼容。如果您尚未安装Gradle,您可以按照www.gradle.org/的说明进行操作

Spring引导依赖关系可以使用
org.springframework.boot
group
。通常,您的项目将声明一个或多个“启动器”的依赖关系 。Spring Boot提供了一个有用的Gradle插件 ,可用于简化依赖关系声明和创建可执行文件。

Gradle Wrapper

当您需要构建项目时,Gradle Wrapper提供了一种“获取”Gradle的好方法。它是一个小脚本和库,它与代码一起引导构建过程。有关详细信息,请参阅docs.gradle.org/2.14.1/userguide/gradle_wrapper.html

这是一个典型的
build.gradle
文件:

plugins {
id 'org.springframework.boot' version '1.5.6.RELEASE'
id 'java'
}

jar {
baseName = 'myproject'
version =  '0.0.1-SNAPSHOT'
}

repositories {
jcenter()
}

dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile("org.springframework.boot:spring-boot-starter-test")
}


10.2. 安装 Spring Boot CLI

Spring Boot CLI是一个命令行工具,如果要使用Spring快速原型,可以使用它。它允许您运行Groovy脚本,这意味着您具有熟悉的类似Java的语法,没有太多的样板代码。

您不需要使用CLI来使用Spring Boot,但它绝对是将Spring应用程序从本地开始的最快方法。

10.2.1. 手动安装

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

spring-boot-cli-1.5.6.RELEASE-bin.zip

spring-boot-cli-1.5.6.RELEASE-bin.tar.gz

各个发布版本的快照快照

下载后,请按照 解压缩的归档文件中的INSTALL.txt说明进行操作。总而言之:在文件的目录中有一个
spring
脚本(
spring.bat
对于Windows),或者您可以使用该文件(脚本可帮助您确保类路径设置正确)。
bin/.zipjava -jar.jar


10.2.2. 用 SDKMAN!安装

SDKMAN!(软件开发套件管理器)可用于管理各种二进制SDK的多个版本,包括Groovy和Spring Boot CLI。获取SDKMAN!从sdkman.io并安装Spring Boot

$ sdk install springboot
$ spring --version
Spring Boot v1.5.6.RELEASE

如果您正在开发CLI的功能,并希望轻松访问刚创建的版本,请遵循以下额外说明。

$ sdk install springboot dev /path/to/spring-boot/spring-boot-cli/target/spring-boot-cli-1.5.6.RELEASE-bin/spring-1.5.6.RELEASE/
$ sdk default springboot dev
$ spring --version
Spring CLI v1.5.6.RELEASE

这将安装一个
spring
称为
dev
实例的本地实例。它指向您的目标构建位置,因此每次重建Spring Boot时,
spring
都将是最新的。

你可以看到它:

$ sdk ls springboot
============================================================================
Available Springboot Versions
============================================================================
> + dev
* 1.5.6.RELEASE
============================================================================
+ - local version
* - installed
> - currently in use
============================================================================


10.2.3. OSX Homebrew 安装

如果您在Mac上使用Homebrew,则您需要做的所有安装Spring Boot CLI都是:

$ brew tap pivotal / tap
$ brew install springboot

自制将安装
spring
/usr/local/bin


*如果您没有看到公式,您的安装可能会过期。只需执行并重brew update试。

10.2.4. MacPorts 安装

如果您在Mac上使用MacPorts,则您需要做的所有安装Spring Boot CLI都是:

$ sudo port install spring-boot-cli


10.2.5. 命令行补全

Spring Boot CLI为BASHzsh shell提供命令补全的功能。您可以在任何shell中引用脚本(也称为
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


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

}

Then simply run it from a shell:

$ spring run app.groovy

*首先运行应用程序需要一些时间,因为下载依赖关系。后续运行将会更快。

在您的网络浏览器中打开localhost:8080,您应该会看到以下输出:

Hello World!


10.3. 从早期版本的Spring Boot 升级

如果您从早期版本的Spring Boot升级,请检查项目wiki上托管的“发行说明” 。您将找到升级说明以及每个版本的“新的和值得注意的”功能的列表。

要升级现有的CLI安装,请使用相应的软件包管理器命令(例如
brew upgrade
),或者如果手动安装了CLI,请按照 标准说明记住更新
PATH
环境变量以删除任何旧的引用。

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

让我们开发一个简单的“Hello World!”的web应用程序,它可以突显出Spring Boot的一些主要功能。我们将采用Maven来构建该项目,因为大多的IDE都支持它。

*spring.io网站包含使用Spring的引导许多“入门”指南。如果您正在寻求解决具体问题;可以先看一下

您可以通过start.spring.io
web
依赖关系搜索器中选择启动器来快速完成以下步骤。这将自动生成一个新的项目结构,以便您立即开始编码。查看文档了解更多详细信息

在开始之前,打开终端来检查您是否安装了有效的Java和Maven版本。

$ java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
$ mvn -v
Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T13:58:10-07:00)
Maven home: /Users/user/tools/apache-maven-3.1.1
Java version: 1.7.0_51, vendor: Oracle Corporation

此示例需要在其自己的文件夹中创建。后续说明假设您已经创建了一个合适的文件夹,它是您的“当前目录”。

11.1. 创建 POM文件

我们需要先创建一个Maven
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.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>

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

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

</project>

这应该给你一个工作的构建,你可以通过运行测试
mvn package
(你可以暂时忽略警告:“jar will be empty - no content was marked for inclusion!”)。

*此时,您可以将项目导入到IDE中(最现代的Java IDE包括内置的Maven支持)。为了简单起见,我们将继续为此示例使用纯文本编辑器。

11.2. 添加类路径依赖关系

Spring Boot提供了一些“Starters”,可以方便地将jar添加到您的类路径中。我们的示例应用程序已经在
parent
POM 的 一部分中使用了
spring-boot-starter-parent
。这
spring-boot-starter-parent
是一个提供有用的Maven默认值的特殊启动器。它还提供了一个
dependency-management
部分,以便您可以省略
version
“blessed”依赖关系的标签。

其他“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
本身不提供依赖。我们来编辑
pom.xml
并在
parent
下添加
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本身。

11.3. 写代码

要完成我们的应用程序,我们需要创建一个单一的Java文件。Maven会编译源代码从
src/main/java
,所以你需要创建一个文件夹结构,然后添加一个命名的文件默认情况下
src/main/java/Example.java


import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
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);
}

}

虽然这里没有太多的代码,但是相当多的是。我们来看看重要的部分。

11.3.1. @RestController 和 @RequestMapping 注解

我们的
Example
的第一个注释是
@RestController
。这被称为stereotype annotation。它为人们阅读代码提供了一些提示,对于Spring来说,这个类具有特定的作用。在这种情况下,我们的类是一个web,
@Controller
所以Spring在处理传入的Web请求时会考虑它。

@RequestMapping
注释提供“路由”的信息。告诉Spring,任何具有路径“/”的HTTP请求都应映射到该
home
方法。该
@RestController
注解告诉Spring使得到的字符串直接返回给调用者。

*在
@RestController
@RequestMapping
注解是Spring MVC的注解(他们并不是专门针对Spring Boot)。有关更多详细信息,请参阅Spring参考文档中的MVC部分

11.3.2. @EnableAutoConfiguration 注解

第二类注释是@EnableAutoConfiguration。这个注释告诉Spring Boot根据您添加的jar依赖关系来“猜”你将如何配置Spring。自从spring-boot-starter-web添加了Tomcat和Spring MVC后,自动配置将假设您正在开发Web应用程序并相应地设置Spring。

Starters和自动配置

自动配置旨在与“Starters”配合使用,但两个概念并不直接相关。您可以自由选择启动器之外的jar依赖项,Spring Boot仍然会自动配置您的应用程序。

11.3.3. main方法

我们的应用程序的最后一部分是main方法。这只是一个遵循Java惯例的应用程序入口点的标准方法。我们的main方法是SpringApplication通过调用委托给Spring Boot的run。SpringApplication将引导我们的应用程序,启动Spring,然后启动自动配置的Tomcat Web服务器。我们需要Example.class作为一个参数传递给run方法来判断SpringApplication哪个是Spring组件。该args数组也被传递以暴露任何命令行参数。

11.4. 运行示例

在这一点上我们的应用程序应该工作 既然我们使用了 spring-boot-starter-parentPOM,我们有一个有用的run目标,我们可以使用它来启动应用程序。mvn spring-boot:run从根项目目录中键入以启动应用程序:

$ mvn spring-boot:run
.   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/  ___)| |_)| | | | | || (_| |  ) ) ) )
'  |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot ::  (v1.5.6.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)

如果你打开一个web浏览器到localhost:8080你应该看到以下输出:

Hello World!
正常退出应用程序命中[code=plain]ctrl-c
。[/code]

11.5. 创建一个可执行jar

让我们完成我们的例子,创建一个完全自包含的可执行文件,我们可以在生产中运行。可执行的jar(有时称为“fat jars”)是包含编译的类以及代码需要运行的所有jar依赖关系的归档。

可执行jarJava

Java不提供任何标准的方法来加载嵌套的jar文件(即jar文件本身包含在jar中)。如果您正在寻找分发自包含的应用程序,这可能是有问题的。

为了解决这个问题,许多开发人员使用“uber”jars。一个uber jar简单地将所有类,从所有jar包到一个档案。这种方法的问题是,很难看到您在应用程序中实际使用哪些库。如果在多个jar中使用相同的文件名(但具有不同的内容),也可能会有问题。

Spring Boot采用一个不同的方法,可以直接对jar进行嵌套。

要创建一个可执行的jar,我们需要添加
spring-boot-maven-plugin
到我们的
pom.xml
。在以下
dependencies
部分中插入以下行:

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

*所述
spring-boot-starter-parent
POM包括
<executions>
配置以结合
repackage
目标。如果您不使用父POM,您将需要自己声明此配置。有关详细信息,请参阅插件文档

保存
pom.xml
并从命令行运行
mvn package


$ mvn package

[INFO] Scanning for projects...
[INFO]
[INFO] -------------------------------- ----------------------------------------
[INFO]Building myproject 0.0.1-SNAPSHOT
[INFO] ----------------------------------------------- -------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar default-jar)@ myproject ---
[INFO]Building jar:/Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring- boot-maven-plugin:1.5.6.RELEASE:repackage(default)@ myproject ---
[INFO] -------------------------- ----------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ----------------------------------------------- -------------------------

如果你看
target
目录,你应该看到
myproject-0.0.1-SNAPSHOT.jar
。该文件的大小约为10 MB。如果你想偷看,可以使用
jar tvf


$ jar tvf target / myproject-0.0.1-SNAPSHOT.jar

你也应该看到一个名为小得多文件
myproject-0.0.1-SNAPSHOT.jar.original
target
目录。这是Maven在由Spring Boot重新打包之前创建的原始jar文件。

要运行该应用程序,请使用以下
java -jar
命令:

$ java -jar target / myproject-0.0.1-SNAPSHOT.jar

。____ _ __ _ _
/ \\ / ___'_ __ _ _(_)_ __ _ \ \ \ \
(()\ ___ | '_ |' _ | |“_ \ / _` | \ \ \ \
\\ / ___)| | _)| | | | | || (_ | |))))
'| ____ | .__ | _ | | _ | _ | | _ \ __,| / / / /
========= | _ | ============== | ___ / = / _ / _ / _ /
:: Spring Boot ::(v1。 5.6.RELEASE)
....... 。。
....... 。。(log output here)
....... 。。
........Started Example2.536秒(JVM running for 2.864)

像以前一样,要优雅地退出应用程序
ctrl-c


12. 接下来读什么

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Spring Boot java 文档