简介
Spring Boot 的作用在于创建和启动新的基于 Spring 框架的项目。它的目的是帮助开发人员很容易的创建出独立运行和产品级别的基于 Spring 框架的应用。Spring Boot 会选择最适合的 Spring 子项目和第三方开源库进行整合。大部分 Spring Boot 应用只需要非常少的配置就可以快速运行起来。Spring Boot 的目标不在于为已解决的问题域提供新的解决方案,而是为平台带来另一种开发体验,从而简化对这些已有技术的使用。对于已经熟悉Spring生态系统的开发人员来说,Boot是一个很理想的选择,不过对于采用Spring技术的新人来说,Boot提供一种更简洁的方式来使用这些技术。
Spring Boot 所提供的众多便捷功能,都是借助于Groovy强大的MetaObject协议、可插拔的AST转换过程以及内置的依赖解决方案引擎所实现的。其包含的特性如下:
- 创建可以独立运行的 Spring 应用。
- 直接嵌入 Tomcat 或 Jetty 服务器,不需要部署 WAR 文件。
- 提供推荐的基础 POM 文件来简化 Apache Maven 配置。
- 尽可能的根据项目依赖来自动配置 Spring 框架。
- 提供可以直接在生产环境中使用的功能,如性能指标、应用信息和应用健康检查。
- 没有代码生成,也没有 XML 配置文件。
通过 Spring Boot,创建新的 Spring 应用变得非常容易,而且创建出的 Spring 应用符合通用的最佳实践。只需要简单的几个步骤就可以创建出一个 Web 应用。下面介绍使用 Maven 作为构建工具创建的 Spring Boot 应用。
环境要求
默认情况下,Spring Boot 1.3.6.RELEASE需要 Java7+ 以及Spring Framework 4.2.7.RELEASE+。你也可以使用Java,但这需要一些额外的配置。构建工具需要Maven3.2+或者Gradle1.12+。在这里,我们使用Java1.8.0_65,Maven3.3。
$ java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
$ mvn -v
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T19:57:37+08:00)
Maven home: /usr/software/apache-maven-3.3.3
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: /usr/software/jdk1.8.0_65/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.19.0-64-generic", arch: "amd64", family: "unix"
第一个Spring Boot项目
添加Spring Boot依赖
Spring Boot的相关依赖都是使用 org.springframework.boot 作为其groupId。首先,你的Maven项目的POM需要继承spring-boot-starter-parent项目,然后再根据需要添加其他功能模块。Spring Boot 还提供了可选的Maven插件,用于构建可执行的jar包。
以下是Spring Boot 项目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.3.6.RELEASE</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>
</project>
通过继承 spring-boot-starter-parent 是运用 Spring Boot 的一种非常有效的方式,但有时候你可能需要继承其他的POM,或者不需要 Spring Boot 的默认设置。运用 Spring Boot 的其他方式后面再作研究。
- spring-boot-starter-web 是Web项目的依赖,它会提供Tomcat和 Spring MVC 相关的支持
- spring-boot-maven-plugin 用于构建一个可执行的jar
编写Java代码
为了使我们的项目能够运行,我们需要创建一个Java类Example.java,该类需要包含main方法,main方法是Spring Boot 项目的入口。以下是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 告诉Spring该类用于处理Web请求,并且把结果直接返回给调用者
- @RequestMapping 提供路由信息,它告诉Spring请求对应路径的方法
- @EnableAutoConfiguration 告诉 Spring Boot 根据项目中添加的依赖,进行相关的配置
- main方法是一个java程序的入口,它委托 Spring Boot 的SpringApplication类调用其run方法来引导Spring以及Tomcat容器的执行。
运行项目
我们在pom.xml文件中继承了 spring-boot-starter-parent,那么我们就可以在命令行输入 mvn spring-boot:run 来运行项目,运行效果如下:
$ mvn spring-boot:run
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.3.6.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)
打开浏览器,输入:localhost:8080,我们就可以看到浏览器返回的结果:
Hello World!
我们可以通过ctrl-c来退出程序。
以上就是一个简单的Spring Boot的案例。