将多个 Spring 配置文件应用到单个配置类

use*_*723 3 java testing spring integration-testing spring-profiles

我的应用程序有 4 个可能的 Spring 配置文件

  • 测试(这用于单元/集成测试)
  • 质量保证
  • 阶段
  • 生产

上面列表中的最后 3 个是该应用程序将运行的实际环境。

这是我的配置类 AppConfig 的概述

@Configuration
@ComponentScan(basePackages={"org.mycompany.services","org.mycompany.domain", "org.mycompany.utils"})
public class AppContext {

}
Run Code Online (Sandbox Code Playgroud)

这是我的问题:我希望 AppContext 的配置仅应用于 QA、STAGE 和 生产配置文件(但不适用于测试配置文件)。最好的方法是什么?

原因是上面的配置类从 org.mycompany.services 中扫描并选择类。但我不希望为 TEST 配置文件选取此包,因为我打算使用 Mockito 模拟此包中的类。

另一个可能的问题是,我是否需要重新考虑进行单元/集成测试的方式,以便可以简化对 org.mycompany.service 包中的类的模拟?

Boh*_*rdt 5

@Profile您可以在配置类上使用注释。

要为除 之外的任何配置文件启用该类TEST,只需像使用它一样@Profile("!TEST")

或者您可以明确指定配置文件,如下所示:@Profile({ "QA", "STAGE", "PRODUCTION" })