【问题标题】:How to avoid to configure an external library by another library using Spring Boot如何避免使用 Spring Boot 由另一个库配置外部库
【发布时间】:2016-12-11 02:07:13
【问题描述】:

假设我有两个 Spring Boot 项目。第一个项目只是一个提供各种功能的支持库。第二个是使用支持项目(jar)的“主”项目(主库)。

支持库有一些服务应该由主项目自动装配。

如何配置支持库,使主库不必为支持库做任何配置。本质上我说的是组件扫描。

到目前为止,我读到的是,主库必须在组件扫描中包含支持库的包。这是真的吗?我希望不会,因为在我看来,支持库应该自己完成所有配置,而另一个仅使用此支持库的库(或项目)不应该处理支持库的配置。

本质上,我想知道支持库是否有可能通过@Configuration 注释或类似(或@SpringBootApplication)来配置自己,以便另一个库不必处理其他库的所有细节.我真的希望这确实能以某种方式起作用,因为我认为另一个库必须为它的支持库在其配置方面完成这项工作,这有点极端。

【问题讨论】:

    标签: java configuration spring-boot component-scan


    【解决方案1】:

    好的,我自己找到了解决办法。

    诀窍如下。

    在支持项目中有一个配置类(我已经有了,但没有考虑在内)。 配套库的配置类基本如下:

    @SpringBootApplication
    public class SupportLibApplication {
    }
    

    主项目也有一个配置类。诀窍是在主项目的配置类中包含支持类的配置类。这是我缺少的链接。 主项目的配置类现在看起来像:

    @SpringBootApplication
    @Import({SupportLibApplication.class})
    public class QuestApplication extends WebMvcConfigurerAdapter {
    …
    }
    

    【讨论】:

    • 或者,当您使用 Spring Boot 时,请阅读有关如何创建自己的自动配置的部分,您可以省略导入,您只需要添加依赖项。
    【解决方案2】:

    你需要在你的项目中添加一个依赖spring-boot-configuration-processor,比如@M。 Deinum 提到。这是工作example 的链接。但是,我还没有找到在使用这种方法时拥有多个 bean 的方法。

    在 Stack Overflow 上的 answer 中显示了另一种方法。

    【讨论】:

      猜你喜欢
      • 2021-07-07
      • 2018-07-09
      • 1970-01-01
      • 2018-08-07
      • 2017-11-26
      • 1970-01-01
      • 1970-01-01
      • 2019-12-16
      • 2014-10-23
      相关资源
      最近更新 更多