From d4e1929dcab147030d3bcae89b1801250fd6a5da Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期四, 25 四月 2019 11:25:43 +0800
Subject: [PATCH] 优化feign 异常处理
---
java110-core/src/main/java/com/java110/core/feign/FeignConfiguration.java | 21 ++++++++++++++++++++-
java110-core/src/main/java/com/java110/core/feign/UserErrorDecoder.java | 24 ++++++++++++++++++------
2 files changed, 38 insertions(+), 7 deletions(-)
diff --git a/java110-core/src/main/java/com/java110/core/feign/FeignConfiguration.java b/java110-core/src/main/java/com/java110/core/feign/FeignConfiguration.java
index 0e2ce94..2fc7c21 100644
--- a/java110-core/src/main/java/com/java110/core/feign/FeignConfiguration.java
+++ b/java110-core/src/main/java/com/java110/core/feign/FeignConfiguration.java
@@ -1,13 +1,32 @@
package com.java110.core.feign;
+import feign.Feign;
import feign.codec.ErrorDecoder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Scope;
+/**
+ *
+ */
@Configuration
public class FeignConfiguration {
+ /**
+ *
+ * @return
+ */
@Bean
- public ErrorDecoder errorDecoder(){
+ public ErrorDecoder errorDecoder() {
return new UserErrorDecoder();
}
+
+ /**
+ *
+ * @return
+ */
+ /* @Bean
+ @Scope("prototype")
+ public Feign.Builder feignBuilder() {
+ return Feign.builder();
+ }*/
}
\ No newline at end of file
diff --git a/java110-core/src/main/java/com/java110/core/feign/UserErrorDecoder.java b/java110-core/src/main/java/com/java110/core/feign/UserErrorDecoder.java
index e6ac9e3..4e5d6d2 100644
--- a/java110-core/src/main/java/com/java110/core/feign/UserErrorDecoder.java
+++ b/java110-core/src/main/java/com/java110/core/feign/UserErrorDecoder.java
@@ -10,27 +10,39 @@
import java.io.IOException;
+/**
+ * 鑷畾涔夊紓甯歌В鏋�
+ */
public class UserErrorDecoder implements ErrorDecoder {
+
+ private static final int HTTP_STATUS_400 = 400;
private Logger logger = LoggerFactory.getLogger(getClass());
+ /**
+ * 寮傚父瑙f瀽 鍦� SynchronousMethodHandler 绫� 134 鍙疯皟鐢�
+ *
+ * @param methodKey 鏂规硶key
+ * @param response 杩斿洖瀵硅薄
+ * @return 杩斿洖寮傚父
+ */
public Exception decode(String methodKey, Response response) {
Exception exception = null;
try {
String json = Util.toString(response.body().asReader());
- logger.error("璋冪敤鏂规硶鍑虹幇寮傚父浜嗭細"+json);
+ logger.error("璋冪敤鏂规硶鍑虹幇寮傚父浜嗭細" + json);
exception = new RuntimeException(json);
} catch (IOException ex) {
logger.error(ex.getMessage(), ex);
}
- // 杩欓噷鍙皝瑁�4寮�澶寸殑璇锋眰寮傚父脽
- if (400 <= response.status() && response.status() < 500){
- exception = new HystrixBadRequestException("request exception wrapper", exception);
- }else{
+ // 杩欓噷鍙皝瑁�4寮�澶寸殑璇锋眰寮傚父脽 && response.status() < 500
+ if (HTTP_STATUS_400 <= response.status()) {
+ exception = new HystrixBadRequestException("璇锋眰鍙傛暟閿欒锛�", exception);
+ } else {
logger.error(exception.getMessage(), exception);
}
return exception;
}
-}
\ No newline at end of file
+}
--
Gitblit v1.8.0