标签导航:

springboot如何拦截所有healthindicator的健康检查?

SpringBoot拦截所有HealthIndicator健康检查方法

为避免健康检查失败导致Kubernetes服务重启,开发者需要拦截所有HealthIndicator调用并记录失败组件。由于HealthIndicator的实现方式,基于执行的切点无法拦截所有调用。

解决方法是使用基于@annotation的切点:

@Around("@annotation(org.springframework.boot.actuate.health.HealthIndicator)")
public Object healthIndicatorAdvice(ProceedingJoinPoint pjp) throws Throwable {
    // 在此处记录失败的HealthIndicator实现
    Object result = pjp.proceed();
    // 在此处进一步处理result
    return result;
}

此方法可拦截所有标注了@HealthIndicator注解的HealthIndicator实现的health()方法。