Spring 和 Spring 引导之间的区别

Difference between Spring and Spring Boot

有很多人建议我使用 Spring Boot 而不是 Spring 来开发 REST web 服务。 我想知道两者到底有什么区别?

基本上,Spring Boot 是 Spring 应用程序的自以为是的实例。

Spring Boot是一个快速的应用程序开发平台。它使用 Spring 的各种组件,但具有其他优点,例如能够将您的应用程序打包为可运行的 jar,其中包括嵌入式 tomcat(或码头)服务器。此外,Spring Boot 包含很多自动配置(自以为是的部分),它会根据 classes/beans 可用或缺失的内容来选择要创建的内容。

我会回应他们的观点,如果您要使用 Spring,我想不出没有任何理由在没有 Spring Boot 的情况下使用它。

简而言之

  1. Spring 引导减少了编写大量配置和样板代码的需要。
  2. 它对 Spring 平台和第三方库有自己的看法,因此您可以轻松上手。
  3. 易于创建带有嵌入式的独立应用程序Tomcat/Jetty/Undertow。
  4. 提供指标、健康检查和外部化配置。

您可以在此处阅读更多内容http://projects.spring.io/spring-boot/

不幸的是,我的意思是出于对 Spring 引导的个人不满,我还没有看到任何真正的量化列表,其中明确列出了差异。 就只有“……自以为是……”这样的垃圾句被炒作的资格了。

清楚的是,SpringBoot 已将 Spring 注释组隐式地包装到它自己的注释集中。 进一步混淆,并使得任何人都需要从 SpringBoot 开始,必须记住特定的 SpringBoot 注释代表什么。

因此,我的回复对原始问题没有可量化的好处,这类似于 SpringBoot 作者的问题。 Spring IMO 背后的那些人故意开始混淆,这反映了他们的 JavaDoc 和 API 的迟钝(参见 SpringBatch API 作为示例,如果你以为我在发火)这让人怀疑他们开源精神的价值。

我对弄清楚Spring引导的探索仍在继续。

Spring 引导是 Spring 框架的自以为是的观点 projects.Let 通过从 Spring 引导文档中获取的一个程序对其进行分析。

@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 引导自动配置尝试根据您添加的 jar 依赖项自动配置您的 Spring 应用程序。例如,如果 HSQLDB 在您的 classpath 上,并且您没有手动配置任何数据库连接 bean,那么 Spring 引导会自动配置一个内存数据库。

它像专家一样固执己见。 Maven 为您创建一个项目结构,它认为这是项目的一般模式,例如它为您添加 src/main/java 文件夹或资源文件夹。

Spring 启动有助于加快开发速度。它有许多入门项目,可以帮助您更快地开始。它还包括许多非功能性特性,如:嵌入式服务器、安全性、指标、健康检查等。简而言之,它使基于 spring 的应用程序开发更容易,并且具有最少的侵入代码(更少的配置文件,更少的注释)。

参考:https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-documentation-about

对于开发常见的Spring应用程序或开始学习Spring,我认为建议使用Spring Boot。它大大简化了工作,已做好生产准备并迅速被广泛采用。

Spring Boot 被认为是固执己见的,即它大力提倡某种快速开发风格,但它的设计足以容纳规则的例外情况,如果你会。简而言之,它是一种优于配置方法的约定,愿意理解您在必要时打破约定的需要

  • 对于 Spring Framework,您需要使用 XML configuration or Java configuration 配置您的项目。

    但对于 Spring Boot,这些是根据 Spring 团队的快速开发视图预先配置的。这就是为什么 Spring Boot 被称为 "opinionated view"Spring框架。它遵循 Convention over Configuration 设计范式。

    注意:这些配置包括 MVC 的视图解析器、事务管理器、定位容器管理 bean(Spring bean)的方法等等。当然,您可以根据需要覆盖任何这些预配置。

  • Spring Boot 支持嵌入式 servlet 容器,如 TomcatJettyUndertow 创建独立的应用程序,而 Spring Framework 没有。

  • Spring 消除样板代码。
  • Spring-引导消除样板配置。
    more