Spring Boot – 简化 Spring,惠及所有人

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

(这篇博客文章由Phil WebbDave Syer共同撰写)。

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

Spring Boot旨在简化创建基于Spring的、生产级的应用程序和服务,并最大限度地减少繁琐的工作。它对Spring平台采取了明确的观点,以便新用户和现有用户能够快速获得他们需要的内容。您可以使用它来创建独立的Java应用程序,可以使用'java -jar'启动,或者使用更传统的WAR部署。我们还提供了一个运行“Spring脚本”的命令行工具。

下图显示了Spring Boot作为更大Spring生态系统中的一个焦点。它为用户提供了一个较小的接触面,以便从Spring的其余部分获取价值。

Spring Boot in Context

Spring Boot的主要目标是:

  • 为所有Spring开发提供一种从根本上更快、更容易上手的体验。
  • 开箱即用时具有明确的观点,但在需求开始偏离默认值时,又能快速适应。
  • 提供一系列大型项目通用的非功能特性(例如嵌入式服务器、安全、指标、健康检查、外部化配置)。

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、批处理和集成。在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);
    }
}

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

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

我们还提供Maven和Gradle插件,允许您打包一个完全自包含的“胖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里程碑存储库中获得。如果您想尝试此博客中的任何示例,请访问GitHub项目页面,您可以在其中找到详细说明。我们正在积极寻求早期反馈,因此请随时提出问题派生存储库并提交拉取请求。

SpringOne 2GX 2013 即将到来

尽快预订您在圣克拉拉SpringOne的座位。这是亲身体验所有正在发生的事情并提供直接反馈的最佳机会。今年预计会有许多重要的新的公告。查看最近的博客文章以了解我的意思,并且还有更多内容即将到来!

获取 Spring 新闻通讯

随时关注 Spring 新闻通讯

订阅

领先一步

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

了解更多

获取支持

Tanzu Spring在一个简单的订阅中提供对OpenJDK™、Spring和Apache Tomcat®的支持和二进制文件。

了解更多

即将举行的活动

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

查看全部