一、webflux 编程实现网关异常处理
我们知道在某一个服务中出现异常,可以通过 @ControllerAdvice + @ExceptionHandler 来统一异常处理,即使是在微服务架构中,我们也可以将上述统一异常处理放入到公共的微服务中,这样哪一个微服务需要,直接引入模块即可。 但是如果我们的 网关微服务 出现了异常,该怎么处理呢?
步骤如下:
- 在网关微服务中创建一个类,添加 @Configuration 注解将其作为配置类.
- 实现自定义 ErrorWebExceptionHandler 接口,重写 handle 方法.
- 在 handle 方法中实现统一异常处理.
Java 代码注释如下:
@Slf4j
@Configuration
public class GlobalExceptionConfig implements ErrorWebExceptionHandler {
@Autowired
private ObjectMapper objectMapper;
/**
* 全局异常处理
* @param exchange 交换器(request, response)
* @param ex 出现异常时的异常对象
* @return
*/
@Override
public Mono<Void> handle(ServerWebExchange exchange, Throwable ex) {
Map<String, String> result = new HashMap<>();
//1.获取响应对象
Ser