Spring Boot的优势[关闭]
Posted
技术标签:
【中文标题】Spring Boot的优势[关闭]【英文标题】:Advantage of Spring Boot [closed] 【发布时间】:2015-05-04 02:02:31 【问题描述】:我一直在尝试了解 Spring Boot,并可能将我的项目迁移到它。但是,除了嵌入式 Tomcat,我没有得到它的真正优势。您能否向我解释一下 Spring Boot 与常规 Spring 相比的真正强大之处是什么?
【问题讨论】:
很多人对这个问题感兴趣,并且很多人决定关闭这个问题,因为它是基于意见的。说了很多关于***的内容 鉴于问题已结束,我想在 2 年后加上我的 2 美分,因为我一直在观察一些支持。目前,spring boot 的主要优势在于它如何适应基于容器的部署,这基本上是为每个新的基础设施完成的。如果没有 spring-boot,很难在基于 docker 的容器中使用 spring。 【参考方案1】:引用Spring Boot Page,具有以下特点:
-
创建独立的 Spring 应用程序
直接嵌入 Tomcat、Jetty 或 Undertow(无需部署 WAR 文件)
提供自以为是的“入门”POM 以简化您的 Maven 配置
尽可能自动配置 Spring
提供生产就绪功能,例如指标、运行状况检查和外部化配置
绝对无需代码生成和无需 XML 配置
【讨论】:
“不需要 XML 配置”部分真的是 spring-boot 特有的吗?不使用spring-boot就可以通过java配置类来配置所有东西吗? @kgautron 不,可以使用基于 Java 的配置而不使用 spring-boot。 弹簧靴/弹簧是双刃剑。主要取决于从事该项目的开发人员的类型。因为 Spring 功能丰富;它很快就会在草率的开发人员面前失控。您需要更严格地控制应将哪些功能用于什么目的,否则您最终将获得大量应用。总体而言,Spring 不再是轻量级的,每个版本都会添加大量功能,如果这些功能只是为了使用而被拖入,应用程序将不再可维护,很难快速进行更改【参考方案2】:最大的优势是开箱即用的配置基于它找到的内容和嵌入的服务器(你可以让一个 jar 运行它并转到localhost:8080
以查看结果)除了它还有metrics
、health checks
、externalised configuration
等
在我看来是构建云微服务的完美工具。
【讨论】:
【参考方案3】:使用配置/jar 依赖项中包含的默认值进行引导,是 Spring 引导的真正优势!快速完成任务!
它只是 Spring 框架的另一个项目,看起来很简单,对安全、数据、社交等应用程序所需的所有功能都有强大的支持。
如果你喜欢注解而不是像我这样的 XML 配置,你可以使用
@Configuration
进行配置,
@ComponentScan
用于依赖注入,
和 @EnableAutoConfiguration
告诉 spring 猜测默认值
并一起工作。
@SpringBootApplication
注解等价于使用
@Configuration
,
@EnableAutoConfiguration
,
和@ComponentScan
与他们的默认属性。
所以事情进一步简化了,一个注释完成了 3 的工作。
【讨论】:
【参考方案4】:通过大量有用的默认值,从无到有非常容易。
如果您想迁移一些现有的项目,这很可能会产生很多难以迁移的怪癖,这并不容易。
【讨论】:
【参考方案5】:SpringBoot的优势:
无需创建样板配置 大量 SpringBoot Starter 快速启动和运行 在代码/配置更新时自动重启服务器的 DevTools 嵌入式 Tomcat/Jetty/Undertow 支持 更轻松地自定义应用程序属性 轻松管理配置文件特定属性 使用 platform-bom 更轻松地进行依赖管理以下是我的几篇关于 SpringBoot 的优点以及 SpringBoot 工作原理的文章。
Why SpringBoot?
How SpringBoot AutoConfiguration magic works?
【讨论】:
【参考方案6】:最重要的是 Spring Boot 与微服务的概念保持一致,可以从任何地方的容器运行,例如云。这可能是因为 springboot 的以下性质
占地面积小 独立服务 更容易从容器中启动,每个服务都可以在自己的容器中(如 docker) 完全可以通过脚本轻松配置和部署。适合在云中自动扩展和部署。【讨论】:
【参考方案7】:在主动开发中,spring boot 的优点是不用复杂的xml文件配置。
1.Embedded tomcat丢弃web.xml配置;
2.spring-boot security 丢弃applicationcontext-security.xml配置;
3.spring-boot webservice丢弃applicationcontext-ws.xml配置;
4.spring-boot mvc丢弃applicationcontext.xml配置;
5.spring-boot datasource(Relational Database and nosql Database)丢弃applicationcontext.xml配置,即使有多个datasource。
丢弃这个配置文件,方便我们的开发,提高效率。
【讨论】:
以上是关于Spring Boot的优势[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
spring-boot-starter-parent 2.0.1.RELEASE下Spring Boot App立即关闭
如何在 Spring Boot 中在 Spring Security 级别启用 CORS [关闭]
Spring Boot Webflux/Netty - 检测关闭的连接
Spring boot web context (AnnotationConfigEmbeddedWebApplicationContext) - 突然被关闭/关闭