【问题标题】:Is bad practice to have spring boot starter project for starter project?将 Spring Boot 启动项目用于启动项目是不好的做法吗?
【发布时间】:2020-01-02 08:05:29
【问题描述】:

Spring Boot 启动项目提供了广泛的自动配置功能集。但是对于我们的应用程序,我们只想拥有一部分功能。可能只是 spring boot 入门项目的一个功能。那么是否建议在 Spring Boot 提供的启动项目之上自定义启动项目以屏蔽某些功能或直接从较低级别的库编写新的启动项目?

【问题讨论】:

  • Spring boot 提供了许多个启动器,每个启动器都专注于框架支持的一项技术:web、web reactive、jpa、test 等。你在说什么?

标签: spring spring-boot spring-boot-starter


【解决方案1】:

Spring Boot 启动项目提供了广泛的功能集 自动配置

您在谈论两个不同的问题。

我认为自动配置部分是 Spring Boot 自以为是的配置方式。例如,如果在类路径中找到一个内存数据库库(如 H2),它会自动创建一个数据源(指向嵌入式内存数据库),无需您在 Java 配置类中编写配置即可自动装配。当然,您可以通过为该数据库包含适当的驱动程序 jar 来创建自己选择的数据源。同样,许多其他配置默认通过类路径扫描和某些 jar 和类的可用性来完成。

第二部分 - 通常更多的是依赖问题。假设你想在 Spring boot 中使用 web mvc 部分。这也需要一组一致的依赖关系和传递依赖关系。它没有在您选择的构建工具(maven、gradle 等)中查找和声明依赖项,而是创建了启动项目的概念,您只需在其中提及父项,所有正确的依赖项都将被拉上。这提供了一种正确锁定依赖项的好方法。但是,如果您想包含与 boot starter 提供的版本不同的任何版本(前提是这些不同版本没有兼容性问题),您仍然可以在构建工具中显式添加。例如,当 maven 解析工件的依赖项时,默认情况下,它会在所有可用的传递依赖项中包含特定依赖项的最高版本。

【讨论】:

    猜你喜欢
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 2019-08-25
    • 2018-05-30
    • 2017-05-03
    • 2019-03-18
    相关资源
    最近更新 更多