我打算使用spring-boot-actuatorHealtCheckContributors
为 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
仅在其appXProperties中有所不同。
不可能有某种基类,如:
@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
和App2HealthCheckContributor
)?这将消除代码重复。
属性类文件的示例:
@Slf4j
@Data
@ConfigurationProperties(prefix = "app1.management")
public class App1Properties {
private String baseUrl;
private String ...;
}
我怎样才能做到这一点以及application.properties
文件看起来如何才能实现我打算做的事情?
最后一个问题:如何测试一个类的 bean 的多个实例创建,其中填充了 application.properties 中的值?