Spring 仅在特定个人资料上激活注释

Spring activate annotation only on specific profile

我的 Spring 安全功能是通过主 class 中的注释激活的。示例如下。

@ImportResource("classpath:/securityContext.xml")
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
public class MySpringBackend {}

我想将加载这些安全相关文件的过程(目前通过注释完成,如上所示)限制为仅某些 Spring profiles,我将作为程序参数传入。

我找不到任何关于按配置文件限制注释的文档。这可能吗?

例如:在上面的注释中添加 @Profile("production") 之类的东西会将其限制在生产配置文件中。


由于@Component 或@Configuration 只能用@Profile 来标记,所以需要使用@Conditional 注解结合@ImportedResource 来激活特定的profile。查看此 Whosebug 页面以获取解决方案

有 2 个不同的 类,每个都有不同的配置文件注释。

Class 1 将有 1 组注释(除了其配置文件注释)。 Class 2 将有另一组注释(除了其配置文件注释之外)。

在运行时,根据活动配置文件,只有两个 类 之一将被注入到应用程序上下文中。请注意,只有这个特定的 类 注释会被激活。