spring_reference/getting_started.md

275 lines
13 KiB
Markdown
Raw Normal View History

2015-03-12 15:09:51 +00:00
### 开始
2015-03-12 15:52:52 +00:00
如果你想从总体上对Spring Boot或Spring入门本章节就是为你准备的在这里我们将回答基本的"what?""how?"和"why?"问题。你会发现一个温雅的Spring Boot介绍及安装指南。然后我们构建第一个Spring Boot应用并讨论一些我们需要遵循的核心原则。
### Spring Boot介绍
Spring Boot使开发独立的产品级别的基于Spring的应用变得非常简单你只需"just run"。
我们为Spring平台及第三方库提供开箱即用的设置这样你就可以有条不紊地开始。多数Spring Boot应用需要很少的Spring配置。
你可以使用Spring Boot创建Java应用并使用`java -jar`启动它或采用传统的war部署方式。我们也提供了一个运行"spring脚本"的命令行工具。
我们主要的目标是:
- 为所有的Spring开发提供一个从根本上更快的和广泛使用的入门经验。
- 开箱即用,但你可以通过不采用默认设置来摆脱这种方式。
- 提供一系列大型项目常用的非功能性特征(比如,内嵌服务器,安全,指标,健康检测,外部化配置)。
- 绝对不需要代码生成及XML配置。
2015-03-12 16:08:39 +00:00
### 系统要求
默认情况下Spring Boot 1.3.0.BUILD-SNAPSHOT 需要Java和Spring框架4.1.3或以上。你可以在Java6下使用Spring Boot不过需要添加额外配置。具体参考[Section 73.9, “How to use Java 6” ](http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-use-java-6)。构建环境明确支持的有Maven3.2+和Gradle1.12+)。
**注**尽管你可以在Java6或Java7环境下使用Spring Boot通常我们建议你如果可能的话就使用Java8。
* Servlet容器
2015-03-12 16:51:15 +00:00
下列内嵌容器支持开箱即用out of the box
2015-03-12 16:08:39 +00:00
|名称|Servlet版本|Java版本|
|--------|:-------|:-------|
|Tomcat 8|3.1|Java 7+|
|Tomcat 7|3.0|Java 6+|
|Jetty 9|3.1|Java 7+|
|Jetty 8|3.0|Java 6+|
|Undertow 1.1|3.1|Java 7+|
你也可以将Spring Boot应用部署到任何兼容Servlet 3.0+的容器。
### Spring Boot安装
2015-03-12 16:51:15 +00:00
Spring Boot可以跟典型的Java开发工具一块使用或安装为一个命令行工具。不管怎样你将需要安装[Java SDK v1.6 ](http://www.java.com/)或更高版本。在开始之前你需要检查下当前安装的Java版本
```shell
$ java -version
```
如果你是一个Java新手或你只是想体验一下Spring Boot你可能想先尝试[Spring Boot CLI](http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#getting-started-installing-the-cli),否则继续阅读经典地安装指南。
**注**尽管Spring Boot兼容Java 1.6如果可能的话你应该考虑使用Java最新版本。
* 为Java开发者准备的安装指南
你可以以和任何标准Java库相同的方式使用Spring Boot。只需要简单地在你的classpath下包含正确的`spring-boot-*.jar`文件。Spring Boot不需要集成任何特殊的工具所以你可以使用任何IDE或文本编辑器Spring Boot应用也没有什么特殊之处所以你可以像任何其他Java程序那样运行和调试。
尽管你可以拷贝Spring Boot jars不过我们通常推荐你使用一个支持依赖管理的构建工具比如Maven或Gradle
* Maven安装
Spring Boot兼容Apache Maven 3.2或更高版本。如果没有安装Maven你可以参考[maven.apache.org](http://maven.apache.org/)指南。
**注**在很多操作系统上你可以通过一个包管理器安装Maven。如果你是一个OSX Homebrew用户可以尝试`brew install maven`。Ubuntu用户可以运行`sudo apt-get install maven`。
Spring Boot依赖的`groupId`为`org.springframework.boot`。通常你的Maven POM文件需要继承`spring-boot-starter-parent`,然后声明一个或多个[“Starter POMs”](http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-starter-poms)依赖。Spring Boot也提供了一个用于创建可执行jars的[Maven插件](http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#build-tool-plugins-maven-plugin)。
下面是一个典型的`pom.xml`文件:
```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>1.3.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的一个不错的方式但它不总是合适的。有时你需要继承一个不同的parent POM或者你可能只是不喜欢我们的默认配置。查看[Section 13.1.2, “Using Spring Boot without the parent POM”](http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-maven-without-a-parent)获取使用`import`的替代解决方案。
* Gradle安装
Spring Boot兼容Gradle 1.12或更高版本。如果没有安装Gradle你可以参考[www.gradle.org](http://www.gradle.org/)上的指南。
Spring Boot依赖可以使用`org.springframework.boot` `group`来声明。通常,你的项目将声明一个或多个[“Starter POMs”](http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-starter-poms)依赖。Spring Boot提供一个用于简化依赖声明和创建可执行jars的有用的[Gradle插件](http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#build-tool-plugins-gradle-plugin)。
**注**当你需要构建一个项目时Gradle Wrapper提供一个获取Gradle的漂亮方式。它是一个伴随你的代码一块提交的小脚本和库用于启动构建进程。具体参考[Gradle Wrapper](www.gradle.org/docs/current/userguide/gradle_wrapper.html)。
下面是一个典型的`build.gradle`文件:
```gradle
buildscript {
repositories {
jcenter()
maven { url "http://repo.spring.io/snapshot" }
maven { url "http://repo.spring.io/milestone" }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.0.BUILD-SNAPSHOT")
}
}
apply plugin: 'java'
apply plugin: 'spring-boot'
jar {
baseName = 'myproject'
version = '0.0.1-SNAPSHOT'
}
repositories {
jcenter()
maven { url "http://repo.spring.io/snapshot" }
maven { url "http://repo.spring.io/milestone" }
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
```
2015-03-12 15:52:52 +00:00
* Spring Boot CLI安装
2015-03-12 16:51:15 +00:00
2015-03-14 17:13:24 +00:00
Spring Boot是一个命令行工具用于使用Spring进行快速原型搭建。它允许你运行[Groovy](http://groovy.codehaus.org/)脚本这意味着你可以使用类Java的语法并且没有那么多的模板代码。
你没有必要为了使用Spring Boot而去用CLI但它绝对是助力Spring应用的最快方式。
- 手动安装
你可以从Spring软件仓库下载Spring CLI分发包
1. [spring-boot-cli-1.3.0.BUILD-SNAPSHOT-bin.zip](http://repo.spring.io/snapshot/org/springframework/boot/spring-boot-cli/1.3.0.BUILD-SNAPSHOT/spring-boot-cli-1.3.0.BUILD-SNAPSHOT-bin.zip)
2. [spring-boot-cli-1.3.0.BUILD-SNAPSHOT-bin.tar.gz](http://repo.spring.io/snapshot/org/springframework/boot/spring-boot-cli/1.3.0.BUILD-SNAPSHOT/spring-boot-cli-1.3.0.BUILD-SNAPSHOT-bin.tar.gz)
不稳定的[snapshot分发包](http://repo.spring.io/snapshot/org/springframework/boot/spring-boot-cli/)也能获取到。
下载完成后,遵循解压后的存档里的[INSTALL.txt](http://raw.github.com/spring-projects/spring-boot/master/spring-boot-cli/src/main/content/INSTALL.txt)操作指南进行安装。一般而言,在`.zip`文件的`bin/`目录下存在一个`spring`脚本Windows下是`spring.bat`),或者使用`java -jar`来运行一个`.jar`文件该脚本会帮你确定classpath被正确设置
- 使用GVM安装
GVMGroovy环境管理器可以用来管理多种不同版本的Groovy和Java二进制包包括Groovy自身和Spring Boot CLI。可以从[gvmtool.net](http://gvmtool.net/)获取`gvm`并使用以下命令安装Spring Boot
```shell
$ gvm install springboot
$ spring --version
Spring Boot v1.3.0.BUILD-SNAPSHOT
```
如果你正在为CLI开发新的特性并想轻松获取你刚构建的版本可以使用以下命令
```shell
$ gvm install springboot dev /path/to/spring-boot/spring-boot-cli/target/spring-boot-cli-1.3.0.BUILD-SNAPSHOT-bin/spring-1.3.0.BUILD-SNAPSHOT/
$ gvm use springboot dev
$ spring --version
Spring CLI v1.3.0.BUILD-SNAPSHOT
```
这将会在你的gvm仓库中安装一个名叫`dev`的本地`spring`实例。它指向你的目标构建位置所以每次你重新构建Spring Boot`spring`将会是最新的。
你可以通过以下命令来验证:
```shell
$ gvm ls springboot
================================================================================
Available Springboot Versions
================================================================================
> + dev
* 1.3.0.BUILD-SNAPSHOT
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
```
- 使用OSX Homebrew进行安装
如果你的环境是Mac并使用[Homebrew](http://brew.sh/)想要安装Spring Boot CLI只需如下操作
```shell
$ brew tap pivotal/tap
$ brew install springboot
```
Homebrew将把`spring`安装到`/usr/local/bin`下。
**注**如果该方案不可用可能是因为你的brew版本太老了。你只需执行`brew update`并重试即可。
- 使用MacPorts进行安装
如果你的环境是Mac并使用[MacPorts](http://www.macports.org/)想要安装Spring Boot CLI只需如下操作
```shell
$ sudo port install spring-boot-cli
```
- 命令行实现
Spring Boot CLI启动脚本为[BASH](http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29)和[zsh](http://en.wikipedia.org/wiki/Zsh) shells提供完整的命令行实现。你可以在任何shell中`source`脚本(名称也是`spring`或将它放到你个人或系统范围的bash实现初始化中。在一个Debian系统里系统范围的脚本位于`/shell-completion/bash`下当一个新的shell启动时该目录下的所有脚本都被执行。想要手动运行该脚本例如你已经使用`GVM`进行安装了:
```shell
$ . ~/.gvm/springboot/current/shell-completion/bash/spring
$ spring <HIT TAB HERE>
grab help jar run test version
```
**注**如果你使用Homebrew或MacPorts安装Spring Boot CLI命令行实现脚本会自动注册到你的shell。
- Spring CLI示例快速入门
下面是一个相当简单的web应用你可以用它测试你的安装是否成功。创建一个名叫`app.groovy`的文件:
```groovy
@RestController
class ThisWillActuallyRun {
@RequestMapping("/")
String home() {
"Hello World!"
}
}
```
然后简单地从一个shell中运行它
```shell
$ spring run app.groovy
```
**注**:当你首次运行该应用时将会花费一点时间,因为需要下载依赖。后续运行将会快很多。
在你最喜欢的浏览器中打开[localhost:8080](localhost:8080),然后你应该看到以下输出:
```java
Hello World!
```
2015-03-12 16:51:15 +00:00
### 从Spring Boot早期版本升级
### 开发你的第一个Spring Boot应用