【问题标题】:How to have nested Spring Boot applications added as dependencies to another Spring Boot application ignored?如何将嵌套的 Spring Boot 应用程序作为依赖项添加到另一个 Spring Boot 应用程序被忽略?
【发布时间】:2015-01-30 10:10:14
【问题描述】:

我有两个 Spring Boot 应用程序,更准确地说,一个是 Spring YARN 应用程序(目前用于我的测试,我使用来自 this tutorial 的一个),另一个是提供 REST 接口的应用程序。我希望能够通过 REST 接口将 YARN 应用程序提交到我的 Hadoop 集群。因此,我将 Spring YARN 应用程序添加为我的 REST 应用程序的依赖项。现在我有一个问题,当我启动我的 REST 应用程序时,也找到了 Spring YARN 客户端,这导致它启动,并且按预期失败。 我现在的问题是:如何让 Spring Boot 的 @EnableAutoConfiguration 忽略 Spring YARN 应用程序?

我尝试了以下方法但没有成功:

  • @ComponentScan 中指定了基本包(它们对于两个应用程序都是不相交的)
  • 试图排除 Spring YARN 应用程序尝试从 @EnableAutoConfiguration(exclude=...) 开始初始化的类
    • 我的 Spring YARN 应用程序的主类
    • CommandYarnClient.class
    • SpringYarnClientConfiguration.class
  • 指定要激活的不同配置文件 - yarn 用于我的 Spring YARN 应用程序,rest 用于我的 REST 应用程序

我想做的事是不可能的,还是背后有什么诡计?

【问题讨论】:

    标签: spring maven spring-boot


    【解决方案1】:

    解决了!

    Spring Boot Reference Guide 引导我找到解决方案。如果您更彻底地阅读Gradually replacing auto-configuration 部分,您可以在此处找到:

    如果您需要了解当前正在应用什么自动配置以及原因,请使用--debug 开关启动您的应用程序。这会将自动配置报告记录到控制台。

    我这样做了,看到启动过程试图执行YarnClientAutoConfiguration,所以我将我的自动配置行更改为

    @EnableAutoConfiguration(exclude = YarnClientAutoConfiguration.class)
    

    瞧,我得到了我想要的。

    【讨论】:

      猜你喜欢
      • 2018-10-07
      • 2016-03-17
      • 1970-01-01
      • 2018-08-28
      • 2018-12-01
      • 1970-01-01
      • 2017-04-09
      • 1970-01-01
      • 2021-01-01
      相关资源
      最近更新 更多