自定义Spring @Profile批注

时间:2019-10-25 08:31:47

标签: spring spring-boot annotations

我正在将@SpringBootApplication应用程序从Spring Boot 1.5更新到2.2,从Spring 4.3更新到5.2,并且遇到自定义@Profile注释的问题。

在旧版本中,我有注释

@Profile("sapConnector")
   public @interface SapConnectorProfile {
}

,并且属于{sapConnector“的每个bean都带有@SapConnectorProfile注释。当我运行应用程序时,我只定义了属性spring.profiles.active=sapConnector,它会加载带有此注释的Bean。如果我将属性更改为f.e. spring.profiles.active=demoConnector不会加载带有@SapConnectorProfile批注的任何bean。

在新版的Spring中,即使使用属性@SapConnectorProfile,也将加载所有带有spring.profiles.active=demoConnector注释的bean。

在新的Spring中不可能再这样做了吗?

如果我使用注释@Profile("sapConnector")而不是@SapConnectorProfile,则配置文件可以正常工作。

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我缺少@Retention(RetentionPolicy.RUNTIME)注解。

使用时一切正常:

@Retention(RetentionPolicy.RUNTIME)
@Profile("sapConnector")
public @interface SapConnectorProfile {
}

我创建的问题:https://github.com/spring-projects/spring-framework/issues/23901