多个网关中的统一异常处理类

提醒:

有的微服务不需要异常处理类,比如对内的微服务,如果是可控的,有了异常可以直接抛出去,而对外的每个微服务,需要根据情况判断,是否写异常处理类。

如果写一个全局的异常处理类,可能会不好定位问题,消耗性能。

所以,在全局异常处理中,只适当处理异常,而将其他异常向上抛出。这样可以避免不必要的异常处理开销,同时确保关键问题的快速定位和解决。

如果架构设计要求在多个网关中,写一个统一的异常处理类,可以把这个统一异常处理类,写在common包里。而因为common包里没有主启动类,所以需要利用springboot自动装配原理,来使统一异常处理类生效。

1.在common包中创建统一异常处理类,如GlobalExceptionHandler

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class) //具体的异常类型
    public ResponseEntity handleException(Exception ex) {
        // 异常处理逻辑...
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal Server Error");
    }
}

2.在common包中创建配置类,如CommonAutoConfiguration

@Configuration
public class CommonAutoConfiguration {

    @Bean
    public GlobalExceptionHandler globalExceptionHandler() {
        return new GlobalExceptionHandler();
    }
}

通过以上配置,GlobalExceptionHandler类将被注册为一个Bean,并生效于整个应用。

3.在具体的网关模块中,只需要引入common依赖,就可以使用common包中的统一异常处理类了。

你可能感兴趣的:(spring,boot,java,spring)