Spring Boot – 简化人人都能使用的 Spring

工程 | Phil Webb | 2013年8月6日 | ...

(本博文由 Phil WebbDave Syer 联合撰写)。

我们很高兴地宣布一项名为 Spring Boot 的新项目的第一个里程碑版本发布。

Spring Boot 旨在让创建基于 Spring、生产级别的应用程序和服务变得简单快捷,尽量减少繁琐操作。它对 Spring 平台采取了一种有主见的(opinionated)方式,以便新老用户能够快速获得他们所需的组件。你可以用它来创建独立的 Java 应用程序,这些应用程序可以使用 'java -jar' 来启动,或者进行更传统的 WAR 部署。我们还提供了一个命令行工具来运行“spring 脚本”。

下图显示了 Spring Boot 在更广阔的 Spring 生态系统中的焦点位置。它为用户提供了一个较小的入口点,用于接触和利用 Spring 的其他部分。

Spring Boot in Context

Spring Boot 的主要目标是:

  • 为所有 Spring 开发提供一个**根本性地更快**、**广泛可访问**的“入门”体验。
  • 开箱即用,采取**有主见的(opinionated)**方式,但在需求开始偏离默认设置时,能够**快速让路**。
  • 提供一系列**非功能性特性**,这些特性对于大类项目来说是共通的(例如,嵌入式服务器、安全、指标、健康检查、外部化配置)。

Spring Boot ****生成代码,而且**绝对没有** XML 配置的要求。

Spring 脚本

Spring Boot 提供了一个小型命令行应用程序,可用于运行“spring 脚本”。Spring 脚本是用 Groovy 编写的,这意味着它具有熟悉的类 Java 语法,但代码量更少。我们能够根据脚本的编写方式推断出大量信息。例如,这是一个简单的 Web 应用程序:

@Controller
class ThisWillActuallyRun {

    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello World!"
    }

}

当你使用 'spring run webapp.groovy' 运行此应用程序时,会发生很多事情:

  • 你的脚本会增强常见的 'import' 语句,从而节省你的输入时间。
  • 我们识别 @ResponseBody 注解并下载相应的 Spring JAR。
  • 我们自动创建你原本需要自己编写的 Spring @Configuration
  • 我们启动一个嵌入式 servlet 容器,并在 8080 端口处理传入的请求。

命令行工具能够识别多种不同类型的 Spring 应用程序,包括 Web、Batch 和 Integration。在 GitHub 仓库中提供了许多 示例

Java 版 Spring Boot

你不必使用命令行工具或编写 Groovy 代码来获得 Spring Boot 的优势。我们还提供一流的 Java 支持。例如,这是用 Java 编写的同一个应用程序:

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@Controller
@EnableAutoConfiguration
public class SampleController {

    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(SampleController.class, args);
    }
}

除了 import 语句之外,此示例与之前的 Groovy 脚本的主要区别在于调用 SpringApplicationmain() 方法和 @EnableAutoConfiguration 注解。

当然,使用 Java 你还需要一个构建系统来编译和打包你的代码。我们提供了一系列方便的“starter”POM,你可以与 MavenGradleAnt+Ivy 一起使用,快速获取所需的依赖。例如,上面的应用程序只需要一个 spring-boot-starter-web 模块的依赖。

我们还提供了 Maven 和 Gradle 插件,允许你打包一个完全自包含的“fat jar”,可以从命令行启动。

$ java -jar myproject.jar
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::   v0.0.0.BUILD.SNAPSHOT

2013-07-31 00:08:16.117  INFO 56603 --- [           main] o.s.b.s.app.SampleApplication   : Starting SampleApplication v0.1.0 on mycomputer with PID 56603 (/apps/myapp.jar started by pwebb)
2013-07-31 00:08:16.166  INFO 56603 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@6e5a8246: startup date [Wed Jul 31 00:08:16 PDT 2013]; root of context hierarchy

生产就绪

Spring Boot 还包含你将应用程序部署到生产环境时通常需要的有用功能。我们可以自动提供 Web 端点,用于监控应用程序健康状况、提供基本指标或分析生产问题(如线程死锁)。我们还提供了一个新的 @ConfigurationProperties 注解,可用于外部化你的应用程序配置(并支持 JSR-303 @Valid 注解)。

上手试试

Spring Boot 0.5.0.M1 现已在 Spring Milestone Repository 中提供。如果你想尝试本博文中的任何示例,请前往 GitHub 项目页面,那里有详细的说明。我们正在积极寻找早期反馈,请随时 提出问题fork 仓库 并提交拉取请求。

SpringOne 2GX 2013 即将来临

请尽快预订 圣克拉拉的 SpringOne 的席位。这是了解最新进展并提供直接反馈的最佳机会。预计今年将有多项重要新公告。查看近期博文,你会明白我的意思,还有更多内容即将推出!

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有