首页 > 解决方案 > Spring Boot:入门模块 - 我需要保留它们吗?

问题描述

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

规划新项目以获得长期支持并能够毫无问题地升级 Spring Boot 版本的最佳实践是什么?

入门模块真的只是为了开始吗?一段时间后,它们应该完全替换为 Spring 框架中的纯模块吗?

标签: springspring-boot

解决方案


Spring Starter 模块的意图不一定旨在通过手动定义依赖项来替换。事实上,情况恰恰相反,因为在 starters 中定义的一组依赖项经过测试可以按预期工作,因为它提供了一个自以为是的集合。

Spring Boot 布局的模式有两个部分,自动配置模块和启动模块:

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

尽管您的查询与开发自定义自动配置无关,但有关开发您自己的自动配置的 Spring Boot 文档很好地解释了该模式。


推荐阅读