如果我认为两个或多个活动配置文件存在冲突,我会尝试阻止我的 Spring Boot 应用程序启动。 IE。
dev
和 prod
不应同时处于活动状态。
此外,我想确保这个逻辑及其与 Spring 引导代码的集成经过正确测试。
我尝试了
EnvironmentPostProcessor
以及ApplicationEvent<ApplicationEnvironmentPrepared>
,我用@SpringBootTest
注释了测试,并且在测试方法中使用了assertThrows
。
如果我这样做
new AnnotationApplicationContext()
我似乎找不到一种方法来操纵上下文使用的环境,如果我尝试自己测试SpringApplication.run()
测试应用程序,它似乎无法找到任何可注入的bean为了环境。
我很确定我正在尝试错误的事情,也许有一种更简单的方法可以实现我的目标。任何提示或指示将不胜感激。
您是否尝试过使用
EnvironmentPostprocessor
注册您的自定义 spring.factories
?这可以通过将以下代码放入位于 spring.factores
的 META-INF/spring.factories
文件中来完成:
org.springframework.boot.env.EnvironmentPostProcessor=com.example.MyCustomEnvPostProcessor