Spring Boot:构建 Spring 应用程序的现代方式

原文地址:https://www.ibm.com/developerworks/community/blogs/3302cc3b-074e-44da-90b1-5055f1dc0d9c/entry/spring-boot?lang=zh


大家都喜欢 Spring Framework,对吧?

 

我们已习惯 Spring 提供的现成特性,比如依赖注入、事务管理、消息支持、集成支持、面向方面编程支持等等。指定一个必要功能,您会发现已有一个围绕它构建的 Spring 库来满足您的需求。当然,Spring 生态系统中的这些包或模块提供了框架级支持,极大地推动了实际应用程序开发流程的发展。

 

作为 Java™ 开发人员我们知道,在所有这些优点背后,往往会有一个难倒最老练开发人员的框架。作为一个框架,它有时会令人不知所措,甚至就算已经了解了如何放入特定的 Spring 模块,一些开发人员仍会感慨我本来可以自己编写这段代码,而不是配置它

 

作为开发人员,我看到在一些以往的 Spring 项目中,没有使用像 Maven 或 Gradle 这样的工具来管理依赖项。所以这就引出了另一组待办事项。似乎仅有 XML 和 Bean 配置还不够,我们现在还应该处理各种库包的依赖项冲突和版本不匹配。

 

Spring Boot 是大救星

为了开发企业 Java 应用程序,我们大部分人需要在某个时刻使用 Spring。但通常我们都知道,它减少了大量配置和变更管理的框架开销。不过不用担心,“Spring Boot”可以拯救您。

 

如果查看 Spring Boot 的项目页,就会在其中看到类似这样的描述:

Spring Boot 使您能轻松地创建独立的、生产级的、基于 Spring 且能直接运行的应用程序

 

那么这是什么意思?

 

轻松这里所指的轻松来源于提前为您配置许多“starter-pom”的想法。基本上讲,这意味着:告诉 Boot 您的愿望,它就会为您配置依赖项在下图中,给出了我想构建的一个新的 Spring 项目的 STS 屏幕截图。

Spring Boot:构建 Spring 应用程序的现代方式

在这个示例中,我仅选择了两个依赖项

  • Web
  • Mongo DB

Web 的定义是使用 tomcat 和 MVC 支持的一站式应用程序开发


Mongo DB 的定义是适当配置 Mongodb 依赖项,就这么简单。

 

现在让我们看看做出上述选择后生成的 pom


生成了一个预先配置的仅有 2 个依赖条目的 pom.xml。一个依赖项名为spring-boot-starter-web,另一个名为spring-boot-starter-data-mongodb


让我们看看下面的 pom 屏幕截图。

Spring Boot:构建 Spring 应用程序的现代方式

 

现在让我们来看看,生成的实际的依赖项分层结构结果。

Spring Boot:构建 Spring 应用程序的现代方式Spring Boot:构建 Spring 应用程序的现代方式

 

在这里我们可以看到,我的应用程序中已配置了依赖项需求。这是starter pom的一个便利特性,它使您能够开箱即用地配置应用程序依赖项。

 

独立:大多数传统 Web 应用程序都是为了在应用服务器内运行而开发的。


任何“Spring Boot”应用程序都有一个不错的特性,那就是您可以在传统 J2EE 服务器内运行应用程序,或者如果可以选择的话,您还可以采用独立存档形式运行它。


java -jar ......<your archive file>

 

在最终用户与应用程序的交互方式上没有区别。

 

直接运行任何 Spring Boot 应用程序都能像从 main 方法运行的 Java 应用程序那样运行。

Spring Boot:构建 Spring 应用程序的现代方式

大部分依赖项都会为您自动配置。您可以使用此链接查看 @SpringBootApplication  Javadoc

 

特定于项目的配置参数去哪了?


它们位于类路径中的一个application*.properties文件或application*.yml文件中。您可以在这里提供特定于环境的项目设置,比如 jdbc urlsmtp 主机名等。有关这些参数的实际值,可以参阅这里提供的官方文档

 

配置文件您只需在 application*.properties 文件或 application*.yml 中编写配置设置一次,并在各种环境中采用相同的构建版本,比如开发、测试和生产环境。

 

但是如何更改配置参数,比如数据库连接 url 或 smtp 主机名?在这里,配置文件的概念就派上了用场。假设我有一个dev环境和一个prod环境。

 

那么,我可以使用以下配置文件来处理环境的特定设置。

  1. application.yml(在运行应用程序期间没有显式指定任何设置时的默认配置文件)
  2. application-dev.yml(此文件将拥有我的“dev”配置文件的配置)
  3. application-prodI.yml(此文件将拥有我的“prod”配置文件的配置)

 

在运行应用程序期间,我可以指定想要运行哪个配置文件,在启动应用程序时就会挑选该配置文件。

 

在我看来,Sping Boot 是 Spring 社区做出的最大贡献之一,它使 Spring 应用程序的设置和配置变得非常容易。与它提供的大量好处相比,学习曲线更小。如果您正在开发新的 Spring 应用程序,可以试一试它!我敢肯定您会喜欢它……

 

 developerWorks 上进一步了解 Java 编程和 Spring

本文翻译自博客:Spring Boot: The modern way to build Spring applications