我正在自定义spring-boot-actuator-autoconfigure
以满足我们公司的需求。我想为datadog配置创建单独的模块。
我希望其他应用程序如果不需要不需要management.metrics.export.datadog.enabled
属性,也可以不排除任何类。
spring-boot-actuator-autoconfigure
包含带有注释的配置类:
@Configuration
@AutoConfigureBefore({ CompositeMeterRegistryAutoConfiguration.class,
SimpleMetricsExportAutoConfiguration.class })
@AutoConfigureAfter(MetricsAutoConfiguration.class)
@ConditionalOnBean(Clock.class)
@ConditionalOnClass(DatadogMeterRegistry.class)
@ConditionalOnProperty(
prefix = "management.metrics.export.datadog",
name = "enabled",
havingValue = "true",
matchIfMissing = true)
@EnableConfigurationProperties(DatadogProperties.class)
public class DatadogMetricsExportAutoConfiguration {
我要在此配置中唯一更改的是matchIfMissing
值。如果没有management.metrics.export.datadog.enabled
属性,我希望不包含此配置。
我看到两个选择:
enabled
返回实际的bean,而如果enabled
= null,则返回虚拟bean,因此不会触发spring中的那个。我不喜欢第一个,因为我正在创建自己的启动器,并且我不希望所有其他项目都排除此配置。
我更喜欢第二种选择,仅在本地/登台/测试环境中禁用指标,因此无论如何我都不会在生产中使用虚拟的,毫无意义的bean。
还有其他选择吗?