xujunwei 3 лет назад
Родитель
Сommit
ecaf5c904d

+ 6 - 3
framework-boot/src/main/java/com/mrxu/framework/boot/feign/FeignRequestInterceptor.java

@@ -4,6 +4,7 @@ import com.mrxu.framework.boot.entity.RpcRequestInfo;
 import feign.RequestInterceptor;
 import feign.RequestTemplate;
 import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
 
 /**
  * 功能概要:[feign拦截器主要用于透传用户信息等数据] <br>
@@ -13,6 +14,10 @@ import org.apache.commons.lang.StringUtils;
  */
 public class FeignRequestInterceptor implements RequestInterceptor {
 
+    // 当前服务名称
+    @Value("${spring.application.name:未知(未配置spring.application.name)}")
+    private String fromServiceName;
+
     /**
      * 请求前设置header信息
      * @param requestTemplate 请求对象
@@ -25,9 +30,7 @@ public class FeignRequestInterceptor implements RequestInterceptor {
         if(StringUtils.isNotBlank(RpcRequestInfo.getTenantId())){
             requestTemplate.header(HeaderConstant.TENANT_ID,RpcRequestInfo.getTenantId());
         }
-        if(StringUtils.isNotBlank(RpcRequestInfo.getFromServiceName())){
-            requestTemplate.header(HeaderConstant.FROM_SERVICE_NAME,RpcRequestInfo.getFromServiceName());
-        }
+        requestTemplate.header(HeaderConstant.FROM_SERVICE_NAME,fromServiceName);
         if(StringUtils.isNotBlank(RpcRequestInfo.getUsername())){
             requestTemplate.header(HeaderConstant.USER_NAME,RpcRequestInfo.getUsername());
         }

+ 4 - 2
framework-boot/src/main/java/com/mrxu/framework/boot/handle/FeignProviderExceptionHandler.java

@@ -6,6 +6,8 @@ import com.mrxu.framework.common.util.BaseCode;
 import com.mrxu.framework.common.util.BusinessException;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.context.annotation.Configuration;
 import org.springframework.core.Ordered;
 import org.springframework.core.annotation.Order;
 import org.springframework.http.HttpStatus;
@@ -22,9 +24,9 @@ import org.springframework.web.bind.annotation.RestController;
  * @Description: 此异常拦截给微服务提供方使用,不能与WebExceptionHandler 同时使用
  */ 
 @ControllerAdvice
-@RestController
 @Slf4j
-@Order(Ordered.LOWEST_PRECEDENCE)
+@RestController
+@ConditionalOnMissingBean(WebExceptionHandler.class)
 public class FeignProviderExceptionHandler {
 
     // 当前服务名称

+ 2 - 4
framework-boot/src/main/java/com/mrxu/framework/boot/handle/UserInfoHandler.java

@@ -19,9 +19,7 @@ import javax.servlet.http.HttpServletResponse;
 @Slf4j
 public class UserInfoHandler extends HandlerInterceptorAdapter {
 
-    // 当前服务名称
-    @Value("${spring.application.name:未知(未配置spring.application.name)}")
-    private String fromServiceName;
+
 
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
@@ -31,7 +29,7 @@ public class UserInfoHandler extends HandlerInterceptorAdapter {
             return true;
         }
         RpcRequestInfo requestInfo = RpcRequestInfo.get();
-        requestInfo.setFromServiceName(fromServiceName);
+        requestInfo.setFromServiceName(request.getHeader(HeaderConstant.FROM_SERVICE_NAME));
         String trackId = request.getHeader(HeaderConstant.TRACK_ID);
         if (StringUtils.isNotBlank(trackId)) {
             requestInfo.setTrackId(trackId);

+ 0 - 1
framework-boot/src/main/java/com/mrxu/framework/boot/handle/WebExceptionHandler.java

@@ -29,7 +29,6 @@ import java.lang.annotation.*;
  */ 
 @ControllerAdvice
 @RestController
-@Order(Ordered.HIGHEST_PRECEDENCE)
 public class WebExceptionHandler {
 
     @Retention(RetentionPolicy.RUNTIME)