首页 > 解决方案 > 按属性有条件地启动 bean 组

问题描述

在我的 Spring Boot 应用程序中,我有许多负责监控的 bean。今天,它们中的每一个都带有以下注释:

@ConditionalOnProperty(name="enable.monitor", havingValue="true")

这样监控是完全可配置的,我可以从属性文件中打开和关闭它。
在这个解决方案中我不喜欢的是我必须将这个长注释添加到每个 bean。我想知道是否有更优雅的方式来实现这种可配置的监控。也许通过用一些新的注释来注释所有的bean,比如说@Monitoring,并以某种方式告诉spring根据属性启动它们,这可能吗?
欢迎任何其他建议。

标签: javaspringjavabeans

解决方案


可以创建自己的自定义@Monitoring注释,如下所示:

Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@ConditionalOnProperty(name="enable.monitor", havingValue="true")
public @interface Monitoring {
}

这可以在之后应用于其他 bean。


推荐阅读