领先一步
VMware 提供培训和认证,助您加速进步。
了解更多(本博文由 Phil Webb 和 Dave Syer 联合撰写)。
我们很高兴地宣布一项名为 Spring Boot 的新项目的第一个里程碑版本发布。
Spring Boot 旨在让创建基于 Spring、生产级别的应用程序和服务变得简单快捷,尽量减少繁琐操作。它对 Spring 平台采取了一种有主见的(opinionated)方式,以便新老用户能够快速获得他们所需的组件。你可以用它来创建独立的 Java 应用程序,这些应用程序可以使用 'java -jar' 来启动,或者进行更传统的 WAR 部署。我们还提供了一个命令行工具来运行“spring 脚本”。
下图显示了 Spring Boot 在更广阔的 Spring 生态系统中的焦点位置。它为用户提供了一个较小的入口点,用于接触和利用 Spring 的其他部分。
Spring Boot 的主要目标是:
Spring Boot **不**生成代码,而且**绝对没有** XML 配置的要求。
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。@Configuration。命令行工具能够识别多种不同类型的 Spring 应用程序,包括 Web、Batch 和 Integration。在 GitHub 仓库中提供了许多 示例。
你不必使用命令行工具或编写 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 脚本的主要区别在于调用 SpringApplication 的 main() 方法和 @EnableAutoConfiguration 注解。
当然,使用 Java 你还需要一个构建系统来编译和打包你的代码。我们提供了一系列方便的“starter”POM,你可以与 Maven、Gradle 或 Ant+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 的席位。这是了解最新进展并提供直接反馈的最佳机会。预计今年将有多项重要新公告。查看近期博文,你会明白我的意思,还有更多内容即将推出!