翻译自Spring Boot 1.5.7 手册,我把一些废话都去了~
让我们来构建一个”Hello World!” 式的Java Web 应用来说明 Spring boot 的一些关键特性。该项目使用 Maven 来构建。
在 start.spring.io/ 上,你可以帮快速地创建一个 Spring Boot 项目。
开始前,请确认你的开发环境中 jdk 1.7+ ,maven 3.2+ 已正确配置。
该例子不使用IDE,而是用文本编辑器……
创建 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>1.5.7.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
写代码
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 注解
Example
类的第一个注解是 @RestController
。它为人们阅读代码提供了一些提示,对于Spring来说,这个类具有特定的作用。在这个例子中,在处理Web请求时,Spring会尝试去调用这个类。
@RequestMapping
注解提供一个 “路径”信息。它告诉Spring任何对于 “/” 的HTTP请求都会由 home
方法来处理。@RestController
注释告诉Spring将生成的字符串直接返回给调用者。
@RestController和@RequestMapping注释是Spring MVC注释(它们不是 Spring boot 特定的)。 有关更多详细信息,请参阅Spring参考文档中的MVC部分。
@EnableAutoConfiguration 注解
第二个类级别的注解是 @EnableAutoConfiguration
。这个注释告诉Spring Boot根据你添加的jar依赖关系来“猜”你将如何配置Spring。由于 spring-boot-starter-web 添加了 Tomcat 和 Spring MVC,自动配置将假定您正在开发Web应用程序并相应地设置Spring。
Starter(启动器) 和 自动配置
自动配置旨在与“Starter”配合使用,但这两个概念并不直接相关。 您可以自由选择启动器之外的jar依赖项,Spring Boot仍然会自动配置您的应用程序。
main 方法
我们的应用程序的最后一部分是 main 方法。 这只是一个遵循Java惯例的应用程序入口点的标准方法。 我们的 main 方法通过 Spring Boot代理的 SpringApplication
类来 运行( run
)。 SpringApplication
将引导我们的应用程序,启动Spring,然后启动自动配置的Tomcat Web服务器。 我们需要将 Example.class
作为参数传递给 run
方法来告诉 SpringApplication
哪是主Spring组件。 args数组也被传递以暴露传入的命令行参数。
运行 例子
现在我们的应用程序可以运行了, 由于我们使用在POM中添加了 spring-boot-starter-parent-parent
,因此我们有一个有用的运行目标,我们可以使用它来启动应用程序。 键入mvn spring-boot:
从根目录运行以启动应用程序:(手册上是在命令行操作的,IDE中通过配置 Run Configuration 即可)
$ mvn spring-boot:run
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.5.7.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)
打开浏览器,输入http://localhost:8080/
你会得到下面的输出:
Hello World!
通过 Ctrl-c
来退出程序
创建可运行的 jar 包
$ 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.7.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
查看jar包里的内容 jar tvf
$ jar tvf myproject-0.0.1-SNAPSHOT.jar
运行程序命令 java -jar
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.5.7.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)
官方提供的 spring-boot 的各种例子