如何将嵌套的Spring Boot应用程序作为依赖项添加到另一个Spring Boot应用程序中?

时间:2015-01-30 10:10:14

标签: spring maven spring-boot

我有两个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
  • 指定要激活的不同配置文件 - 我的Spring YARN应用程序为yarn,REST应用程序为rest

我想做的事情是不可能的,还是背后有一些技巧?

1 个答案:

答案 0 :(得分:0)

解决了!

Spring Boot Reference Guide指示我解决方案。如果您更全面地阅读Gradually replacing auto-configuration上的部分,可以在那里找到:

  

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

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

@EnableAutoConfiguration(exclude = YarnClientAutoConfiguration.class)
瞧,瞧,我得到了我想要的东西。