我有一个将Spring Batch与Spring Web混合的项目。它主要是一个运行作业的Spring Batch项目,但我们在那里有一些REST端点,以及Spring Batch Admin Manager模块。我们的基础项目有自己的(主要)应用程序上下文,但我们在POM中包含的Admin Manager项目也有效地创建了自己的上下文。
我的一个类是@RestController
,这意味着它会被两个上下文自动实例化。这个控制器有几个@Autowired
依赖项,当第一个上下文运行时它很好,因为它找到了所有。但是当第二个上下文运行时,它无法找到这些依赖项,因此应用程序无法正常启动。
但是因为第二个上下文是在后面的Sping Batch Admin Manager项目中自动创建的,所以我实际上无法控制它。我可以通过某种方式在我的@RestController
中手动指定它应该从我的主要背景中排除吗?
答案 0 :(得分:1)
您可以使用其中一个@Conditional注释
E.g。 @ConditionalOnClass或@ConditionalOnMissingClass或@ConditionalOnBean或@ConditionalOnMissingBean
因此,您的控制器只会检查是否存在运行端点所需的类/ bean
了解更多here