【发布时间】:2015-07-16 19:59:28
【问题描述】:
有很多人建议我使用 Spring Boot 而不是 Spring 来开发 REST Web 服务。 我想知道这两者到底有什么区别?
【问题讨论】:
标签: spring spring-boot rest
有很多人建议我使用 Spring Boot 而不是 Spring 来开发 REST Web 服务。 我想知道这两者到底有什么区别?
【问题讨论】:
标签: spring spring-boot rest
【讨论】:
对于Spring Framework,您需要使用XML configuration 或Java configuration 配置您的项目。
但对于 Spring Boot,这些都是根据 Spring 团队的观点预先配置的,以便快速开发。这就是为什么说Spring Boot 是Spring Framework 的“观点”。它遵循 Convention over Configuration 设计范式。
注意: 这些配置包括 MVC 的视图解析器、事务管理器、定位容器托管 bean 的方式(Spring bean)等等。当然,您可以根据需要覆盖任何这些预配置。
Spring Boot 支持嵌入式 servlet 容器,例如 Tomcat、Jetty 或 Undertow,以创建独立的应用程序,而 Spring Framework 没有。
【讨论】:
对于开发常见的 Spring 应用程序或开始学习 Spring,我认为建议使用 Spring Boot。它大大简化了工作,已准备好生产并正在迅速被广泛采用。
Spring Boot 被认为是固执己见的,即它大力提倡某种快速开发的风格,但它的设计足以容纳规则的例外情况,如果你愿意的话。简而言之,它是一种约定优于配置的方法,它愿意理解您在必要时打破约定的需要
【讨论】:
Spring Boot 是对 Spring Framework 项目的固执己见。让我们通过一个取自 Spring Boot 文档的程序来分析它。
@RestController
@EnableAutoConfiguration
public class Example {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Example.class, args);
}
}
这是一个非常基本的 REST API,您需要在 POM.xml 中添加 Spring-boot-starter-web。由于您添加了 starter-web 依赖项,因此注释
@EnableAutoConfiguration 猜测您想开发一个 Web 应用程序并相应地设置 Spring。
Spring Boot 自动配置尝试根据您添加的 jar 依赖项自动配置您的 Spring 应用程序。例如,如果 HSQLDB 在您的 classpath 上,并且您没有手动配置任何数据库连接 bean,那么 Spring Boot 会自动配置一个内存数据库。
它像 maven 一样固执己见。 Maven 为您创建一个项目结构,它认为这是项目的一般模式,例如为您添加 src/main/java 文件夹或资源文件夹。
Spring Boot 有助于加快开发速度。它有许多入门项目,可以帮助您更快地进行。它还包括许多非功能性功能,例如:嵌入式服务器、安全性、指标、健康检查等。简而言之,它使基于 Spring 的应用程序开发变得更容易,并且具有最少的侵入代码(更少的配置文件,更少的注释)。
【讨论】:
不幸的是,我的意思是出于对 Spring boot 的个人挫败感,我还没有看到任何真正的量化列表,其中明确列出了差异。 只有诸如“......自以为是......”这样的垃圾句。
清楚的是,SpringBoot 已将 Spring 注释组隐式地包装到它自己的注释集中。 进一步混淆,并使得任何人开始使用 SpringBoot 都必须记住特定 SpringBoot 注释所代表的内容。
因此,我的回答对原始问题没有可量化的好处,这类似于 SpringBoot 作者的回答。 Spring IMO 背后的人故意混淆视听,这反映了他们的 JavaDoc 和 API 的迟钝(请参阅 SpringBatch API 的例子,如果你认为我在燃烧),这让人怀疑他们的开源精神的价值。
我对 SpringBoot 的探索仍在继续。
【讨论】:
总之
您可以在这里阅读更多内容http://projects.spring.io/spring-boot/
【讨论】:
基本上,Spring Boot 是 Spring 应用程序的一个自以为是的实例。
Spring Boot 是一个快速的应用程序开发平台。它使用 Spring 的各种组件,但具有额外的细节,例如将应用程序打包为可运行 jar 的能力,其中包括嵌入式 tomcat(或码头)服务器。此外,Spring Boot 包含许多自动配置(固执的部分),它会根据可用或缺少的类/bean 来挑选和选择要创建的内容。
我会回应他们的观点,如果你打算使用 Spring,我想不出没有 Spring Boot 的任何理由。
【讨论】: