如果活动概要文件是test或本地,我不希望加载特定的bean。但是,当我设置以下内容时,spring似乎将其视为“或”,并且在活动配置文件为test或local时都将执行该方法。但是,如果删除说local并保留test,那么在测试概要文件时不会创建Bean。
@Profile({"!test","!local"})
使用Spring Boot 1.X时,您可以使用其他配置文件名称更新系统属性,并在之前处理所有布尔逻辑SpringApplication.run。如果符合条件,则可以将概要文件名称附加到活动概要文件中。如果没有,您将不会更改任何内容。
SpringApplication.run
这是非常基本的检查,但是您可以添加更严格的配置文件验证,例如空检查和实际拆分配置文件列表。
String profile = System.getProperty("spring.profiles.active"); if(!profile.contains("test") && !profile.contains("local")) { System.setProperty("spring.profiles.active", profile + ",notdev"); }
如果您使用的是Spring Boot 2.0,则可以addAdditionalProfiles用来添加配置文件(没有SB2应用程序,因此我无法对其进行测试,但我认为它只是将其添加到“系统属性”列表中)。
addAdditionalProfiles
String profile = System.getProperty("spring.profiles.active"); if(!profile.contains("test") && !profile.contains("local")) { SpringApplication.addAdditionalProfiles("notdev"); }
然后您的注释可以是:
@Profile({"notdev"})