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()方法。