在我的Spring-Boot-App中,我想根据(未加载的)spring-profiles有条件地声明一个Bean。
条件:
Profile "a" NOT loaded AND Profile "b" NOT loaded
到目前为止,我的解决方案(有效):
@Bean @ConditionalOnExpression("#{!environment.getProperty('spring.profiles.active').contains('a') && !environment.getProperty('spring.profiles.active').contains('b')}") public MyBean myBean(){/*...*/}
有没有更优雅(更短)的方式来解释这种情况? 特别是我想在这里摆脱Spring Expression Language的使用。
从Spring 5.1.4(Spring Boot 2.1.2中包含)开始,可以在配置文件字符串注释内使用配置文件表达式。所以:
在Spring 5.1.4(Spring Boot 2.1.2)及更高版本中,它很简单:
@Component @Profile("!a & !b") public class MyComponent {}