SpringBoot如何拦截所有HealthIndicator的健康检查?

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

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

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

@Around("@annotation(org.springframework.boot.actuate.health.HealthIndicator)")
public Object healthIndicatorAdvice(P

roceedingJoinPoint pjp) throws Throwable { // 在此处记录失败的HealthIndicator实现 Object result = pjp.proceed(); // 在此处进一步处理result return result; }

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