如何从Spring中的某些上下文中排除bean?

时间:2017-12-07 13:12:59

标签: spring applicationcontext

我有一个将Spring Batch与Spring Web混合的项目。它主要是一个运行作业的Spring Batch项目,但我们在那里有一些REST端点,以及Spring Batch Admin Manager模块。我们的基础项目有自己的(主要)应用程序上下文,但我们在POM中包含的Admin Manager项目也有效地创建了自己的上下文。

我的一个类是@RestController,这意味着它会被两个上下文自动实例化。这个控制器有几个@Autowired依赖项,当第一个上下文运行时它很好,因为它找到了所有。但是当第二个上下文运行时,它无法找到这些依赖项,因此应用程序无法正常启动。

但是因为第二个上下文是在后面的Sping Batch Admin Manager项目中自动创建的,所以我实际上无法控制它。我可以通过某种方式在我的@RestController中手动指定它应该从我的主要背景中排除吗?

1 个答案:

答案 0 :(得分:1)

您可以使用其中一个@Conditional注释

E.g。 @ConditionalOnClass或@ConditionalOnMissingClass或@ConditionalOnBean或@ConditionalOnMissingBean

因此,您的控制器只会检查是否存在运行端点所需的类/ bean

了解更多here

相关问题