Spring Boot:入门模块-我需要保留它们吗?

时间:2019-01-04 21:25:15

标签: spring spring-boot

我正在启动另一个基于Spring Boot的项目。 首先,使用spring-boot-starter依赖项非常容易。但是例如,我有一些已经使用了两年的项目,并且升级这些模块的版本变得更具挑战性和耗时。主要是因为很多东西在后台自动配置,只有隐藏的知识才能控制它们。

计划新项目以获得长期支持,并且能够毫无问题地升级spring boot版本是什么最佳实践?

启动器模块真的只是用于启动吗?一段时间后,应该用Spring框架中的纯模块完全替换它们吗?

2 个答案:

答案 0 :(得分:2)

Spring Starter模块的意图不一定旨在通过手动定义依赖项来代替。实际上,情况恰恰相反,因为在初学者中定义的依赖项集经过测试可以正常工作,因为它提供了一套有用的观点。

Spring Boot设计的模式有两种,自动配置模块和启动器模块:

  • 除非不需要,通常不需要的自动配置模块需要下游依赖。自动配置模块将针对一个或多个模块进行编译,然后根据通常由上下文初始化时可用的库和组件所控制的规则在应用程序上下文中启用配置。这很有用,因为它提供了可以在各种情况下使用的合理基线配置,而无需强制下游消费者必须使用哪些特定的库/供应商。但是,由于打算在各种情况下使用它们,因此作为消费者,您有责任确保您拥有有效的上下文。
  • 入门模块是自动配置模块的补充。它们提供了下游的一组可靠的依赖关系以及自动配置的依赖关系,以使使用者可以开始使用。通常,但不一定,启动器模块本身是相当空的,并且通常不包含任何类,因为它们的主要目的是仅提供可用于传递依赖项的POM。

尽管您的查询与开发自定义自动配置无关,但是有关developing your own auto-configuration的Spring Boot文档在解释模式方面做得很好。

答案 1 :(得分:2)

传统上,当我们开发Spring应用程序时,我们需要自己包括所有必需的依赖项(spring或其他框架jar)。启动器旨在最大程度地减少此类配置。它内部没有任何代码或逻辑。您可以认为这只是一个预定义一些依赖项的配置设置。借助构建系统(例如Maven)的“传递依赖项”功能,包含启动器将自动将该启动器定义的所有依赖项包括到您的项目中。

因此,您可以看到starter提供了一种SpringBoot理念,使开发人员能够创建无需大量配置即可快速“运行”的Spring应用程序,它肯定不会被Spring取代。