我打算写一些HealtCheckContributors
对于 Spring Boot 应用程序,使用弹簧启动执行器。因此,我实现了其中两个。当然,它们旨在检查不同应用程序的运行状况,但具有几乎相同的结构,除了配置属性之外,...
SonarQube 抱怨这一点,我想知道是否可以有一个单一的健康检查类,但实例化的次数与中定义的一样多application.properties
。
一个例子:
application.properties
:
# actuator
app1.management.baseUrl=http://localhost:10000
app1.management.name=app1HealthCheckContributor
app2.management.basUrl=http://localhost:10001
app2.management.name=app2HealthCheckContributor
HealthCheckContributor
对于应用程序1:
@Slf4j
@Component("xxx")
public class App1HealthCheckContributor extends AbstractHealthIndicator {
private final App1Properties app1Properties;
public App1HealthCheckContributor(final App1Properties app1Properties) {
this.app1Properties = app1Properties;
}
@Override
protected void doHealthCheck(Health.Builder builder) {...}
}
...以及每个代码HealthCheckContributor
唯一不同的是其appX属性.
是否有可能拥有某种基类,例如:
@Slf4j
@Component()
public class MyHealthCheckContributor extends AbstractHealthIndicator {
private final MyProperties myProperties;
public MyHealthCheckContributor(final MyProperties myProperties) {
this.myProperties = myProperties;
}
@Override
protected void doHealthCheck(Health.Builder builder) {...}
}
并让 Spring Boot 负责实例化两个HealthCheckContributors
(在我们的例子中App1HealthCheckContributor
and App2HealthCheckContributor
)?
这将消除代码重复。
属性类文件的示例:
@Slf4j
@Data
@ConfigurationProperties(prefix = "app1.management")
public class App1Properties {
private String baseUrl;
private String ...;
}
我怎样才能实现这一目标以及必须如何application.properties
文件看起来像实现了我打算做的事情吗?
最后一个问题:如何测试一个类的 bean 的多个实例创建,其中填充了 application.properties 中的值?