java -jar
运行的 Java 应用程序或者传统的 war 包。咱们还提供了一个运行 “spring scripts” 的命令行工具。虽然可使用Java 6或7的构建Spring Boot,可是咱们一般推荐使用Java 8。html
如下嵌入式servlet容器是开箱即用的:java
名称 | Servlet版本 | Java版本 |
---|---|---|
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能够与“经典”Java开发工具一块儿使用,也能够做为命令行工具安装。不管如何,您将须要Java SDK v1.6或更高版本。 在开始以前,您应该检查您当前的Java安装版本:git
java -version
github
若是您对Java开发不熟悉,或者您只是想尝试 Spring Boot,则可能须要先尝试 Spring Boot CLI,不然请阅读'经典'安装说明。web
尽管Spring Boot与Java 1.6兼容,但若是可能的话,应该考虑使用最新版本的Java。spring
在许多操做系统上,Maven能够经过包管理器来安装。 若是您是OSX Homebrew用户,请尝试
brew install maven
。 Ubuntu用户能够运行sudo apt-get install maven
。apache
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>1.5.9.RELEASE</version>
</parent>
<!-- Add typical dependencies for a web application -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId><!-- web支持 -->
</dependency>
</dependencies>
<!-- Package as an executable jar 打包成可执行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文件中继承,或者您可能不喜欢咱们的默认设置。有关使用import
范围的替代解决方案,请参见Section 13.2.2, “Using Spring Boot without the parent POM”数组
org.springframework.boot
group
进行声明。一般,您的项目将声明依赖关系到一个或多个Starters
。 Spring Boot提供了一个有用的Gradle插件,能够用来简化依赖声明和建立可执行的jar。
Gradle Wrapper
Gradle Wrapper提供了一种在须要构建项目时“获取”Gradle的好方法。 这是一个小脚本和库,与代码一块儿提交以引导构建过程。 有关详细信息,请参阅docs.gradle.org/2.14.1/user…。浏览器
plugins {
id 'org.springframework.boot' version '1.5.9.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")
}
复制代码
project wiki
上托管的“release notes”。 您会发现升级说明以及每一个版本的‘新增长、值得注意’的特性列表。brew upgrade
),或者若是您手动安装了CLI,请按照standard instructions记住更新PATH
环境变量以删除全部旧的引用。spring.io网站包含许多使用Spring Boot的“入门指南”。 若是你想解决一个特定的问题, 先在那里检查。 您能够经过转到start.spring.io并从依赖关系搜索器中选择
Web
starter来快速执行如下步骤。 这将自动生成一个新的项目结构,以便您能够当即开始编码。 检查文档以获取更多详细信息。安全
$ 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
复制代码
此示例须要在其本身的文件夹中建立。 后续的说明假定你已经建立了一个合适的文件目录(其实就是标准的
maven
,咱们也能够经过start.spring.io自动生成项目目录,小编接下来会截图给你们看),而且保证命令行终端是你的“当前目录”(也就是项目根目录,小编是在boot
目录下)。
- boot
- src
- main
- java
- Example.java
- test
- java
- pom.xml
复制代码
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.9.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的内置支持)。 为了简单起见,咱们将继续在这个例子中使用纯文本编辑器。
starters
,咱们能够很方便地将jar添加到你的classpath中。 咱们的示例应用程序已经在POM的父节点中使用了spring-boot-starter-parent
。 spring-boot-starter-parent
是一个特别的starter
,提供了有用的Maven默认值。 它还提供了一个dependency-management 功能,以便您能够省略version
标记以得到“blessed(好的意思吧!)”的依赖关系。spring-boot-starter-web
依赖项,但在此以前,咱们来看看咱们目前拥有的。$ mvn dependency:tree
[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
复制代码
mvn dependency:tree
命令打印项目依赖项的树形表示。 你能够看到spring-boot-starter-parent自己不提供依赖关系。(也就是父项目不提供其余如web的依赖,也无论理依赖,web依赖须要咱们在本身的子项目POM
文件中添加) 让咱们编辑咱们的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服务器和Spring Boot自己。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);
}
}
复制代码
@RestController
和@RequestMapping
注解class
中,第一个注解就是@RestController
。这是一个stereotype(好像是API中的一个包名)
注解。这个注解给阅读这个class
代码的开发人员一种提示(简单地讲就是代表这个类是什么),但对于 Spring 来讲,它代表该类扮演者一个重要的角色。在咱们的例子中,它代表咱们的类是一个web @Controller
,因此Spring在处理传入的Web请求时会考虑它。
@RestController
和@RequestMapping
注解是Spring MVC注释(它们不是Spring Boot特有的)。 有关更多详细信息,请参阅Spring参考资料中的MVC部分。
@EnableAutoConfiguration
注解@EnableAutoConfiguration
。 这个注解告诉Spring Boot根据你添加的jar依赖来“猜想”你将如何配置Spring。 因为spring-boot-starter-web
添加了Tomcat和Spring MVC,因此自动配置会假定你正在开发一个Web应用程序并相应地配置Spring。 starters
配合使用,但这两个概念并不直接相关。 您能够自由选择和选择starter
以外的jar依赖项,而且Spring Boot将尽其所能地自动配置到您的应用程序当中。main
方法。这只是一个遵循Java约定的应用程序入口点的标准方法。 咱们的 main
方法经过调用run来委托Spring Boot的SpringApplication
类。 SpringApplication
将引导咱们的应用程序,开启Spring并继而转向启动自动配置的Tomcat Web
服务器。 咱们须要将Example.class
做为参数传递给run
方法,以告知SpringApplication
是Spring的主要组件。 args
数组也被传递以暴露任何命令行参数。spring-boot-starter-parent POM
,因此咱们知道怎样找到程序运行的入口(main方法
),因此咱们可使用它来启动应用程序。$ mvn spring-boot:run
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.9.RELEASE) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in 2.222 seconds (JVM running for 6.514) 复制代码
Hello World!
复制代码
ctrl+c
便可。让咱们经过建立一个彻底独立的可执行jar文件来完成咱们的例子,咱们能够在生产环境中运行它。 可执行jar(有时也称为“fat jars”)是包含您编译的类以及您的代码须要运行的全部jar依赖项的归档文件。
可执行的 jars and Java
Java不提供任何标准的方式来加载嵌套的jar文件(即jar文件自己包含在jar中)。 若是您正在分发自包含的应用程序,这可能会有问题。 为解决这个问题,不少开发者开发了如
uber jars
.一个uber jar
未来自不一样jar
包的类打包成一个可发布的archive
。这种方法的问题在于,很难在应用程序中看到项目实际使用的库。 若是在多个jar
中使用相同的文件名(但具备不一样的内容,即不一样jar
种类名有可能相同嘛!),则也多是有问题的。 Spring Boot采用了不一样的方法,能够直接嵌入jar
。
要建立一个可执行的jar文件,咱们须要将spring-boot-maven-plugin
添加到咱们的pom.xml
中。 在依赖关系部分下面插入如下几行:
<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.9.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
复制代码
若是您查看target
(注:在项目目录下会生成一个target目录)目录,则应该看到myproject-0.0.1-SNAPSHOT.jar
。 该文件大小应该在10 MB左右。 若是你想偷看里面究竟是什么东西,你可使用jar tvf
:
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
您还应该在target
目录中看到一个名为myproject-0.0.1-SNAPSHOT.jar.original
的小得多的文件。 这是Maven
在被Spring Boot从新包装以前建立的原始jar文件。
要运行该应用程序,请使用java -jar命令:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.9.RELEASE) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in 2.536 seconds (JVM running for 2.864) 复制代码
像之前同样,要优雅地退出应用程序点击ctrl-c
。