Spring вставит список всех компонентов, которые реализуют определенный интерфейс. Например: private List<HealthIndicator> healthIndicatorList
будет содержать каждый класс, который реализует класс HealthIndicator
.
Вы можете реализовать класс HealthIndicator
в своем собственном компоненте, а затем вызвать метод health()
для каждого члена healthIndicatorListи зарегистрируйте результат.
Конечно, не рекурсивно вызывайте метод health()
вашего индикатора работоспособности. Вот некоторый код:
@Component
public class LoggingHealthIndicator implements HealthIndicator
{
@Autowired
private List<HealthIndicator> healthIndicatorList
@Override
public Health health()
{
for (final HealthIndicator current : healthIndicatorList)
{
if (current != this)
{
// assumes SLF4j
logger.log("blam message; {}", current.health());
}
}
return Health.up().build();
}
}
Этот код может не работать, поскольку ваш класс требует всех реализаций HealthIndictor и сам HealthIndicator.
Возможно, вам потребуется добавить метод @PostConstruct
и получитьсписок компонентов HealthIndictor самостоятельно.