如何为 Spring Boot 启动器拆分库中的代码
Posted
技术标签:
【中文标题】如何为 Spring Boot 启动器拆分库中的代码【英文标题】:How to split code in library for spring boot starter 【发布时间】:2021-10-19 02:07:39 【问题描述】:假设我有一个库 A,它提供了可以像 spring-boot-starter 一样启用的给定功能,这意味着将依赖项添加到我的项目将使其可用。 p>
另一方面,我有另一个库 B,它提供了另一个功能,在工作方式上类似于库 A,但它是一个完全不同的功能。
现在我有一个案例,如果项目包含 库 A 和 B,我想以特定方式配置一些 bean。
我的问题是如何决定在哪里编写两个库所需的代码,显然它应该是:
库 A 具有对 B 的可选依赖项,并具有启用该 bean 的特定 @Configuration 相反,库 B 具有对 A 的可选依赖项,具有启用该 bean 的特定 @Configuration在我的例子中,我故意让名称 A 和 B 尽可能通用,一个库正在为 mongo 应用一些特定配置,另一个是包装 mongock 迁移工具。
【问题讨论】:
【参考方案1】:您可以执行以下操作:
-
在不考虑 Spring Boot 的情况下编写库 A 和 B(没有 bean、没有依赖项注入等)
在您的项目中将这两个库声明为依赖项 (Maven/Gradle)
定义一个@Configuration 类来定义你需要的所有bean,类似于this
用Spring profiles 和@Qualifier 决定您何时需要哪个
我写了一篇关于如何使用 @Profile 根据给定场景决定不同 Spring Bean 的博文:https://medium.com/twodigits/keep-your-code-debuggable-4ad69e5e0ac7
【讨论】:
以上是关于如何为 Spring Boot 启动器拆分库中的代码的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot - 如何为指定根目录中的多个路由提供一个静态 html 文件
如何为 Spring Boot 应用程序的 gradle 构建设置活动配置文件?