Kaynağa Gözat

server-feign

WXF 3 yıl önce
ebeveyn
işleme
ab701fcfd7

+ 8 - 1
simulation-resource-server/pom.xml

@@ -29,7 +29,14 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
-
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-loadbalancer</artifactId>
+        </dependency>
         <!-- nacos - 开始 -->
         <dependency>
             <groupId>org.springframework.cloud</groupId>

+ 2 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/Application.java

@@ -2,7 +2,9 @@ package com.css.simulation.resource;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.openfeign.EnableFeignClients;
 
+@EnableFeignClients
 @SpringBootApplication
 public class Application {
 

+ 30 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/common/config/FeignConfiguration.java

@@ -0,0 +1,30 @@
+package com.css.simulation.resource.common.config;
+
+import feign.Logger;
+import feign.RequestInterceptor;
+import feign.RequestTemplate;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 转发 token
+ */
+@Configuration
+public class FeignConfiguration implements RequestInterceptor {
+
+    @Bean
+    public Logger.Level feignLoggerLevel() {
+        return Logger.Level.FULL;
+    }
+
+    @Override
+    public void apply(RequestTemplate requestTemplate) {
+        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+        HttpServletRequest request = attributes.getRequest();
+        requestTemplate.header("Authorization", request.getHeader("Authorization"));
+    }
+}

+ 17 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/feign/RedisService.java

@@ -0,0 +1,17 @@
+package com.css.simulation.resource.feign;
+
+import api.common.pojo.common.ResponseBodyVO;
+import api.common.pojo.param.RedisParameter;
+import com.css.simulation.resource.common.config.FeignConfiguration;
+import com.css.simulation.resource.feign.fallback.RedisServiceFallback;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+
+//@FeignClient(name = "test", url = "http://10.15.12.72:8001", fallback = RedisServiceFallback.class, configuration = FeignConfiguration.class)
+@FeignClient(value = "simulation-resource-common", fallback = RedisServiceFallback.class, configuration = FeignConfiguration.class)
+public interface RedisService {
+
+    @PostMapping("/simulation/resource/common/redis/set")
+    public ResponseBodyVO<String> set(RedisParameter redisParameter);
+}

+ 16 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/feign/fallback/RedisServiceFallback.java

@@ -0,0 +1,16 @@
+package com.css.simulation.resource.feign.fallback;
+
+import api.common.pojo.common.ResponseBodyVO;
+import api.common.pojo.param.RedisParameter;
+import com.css.simulation.resource.feign.RedisService;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestBody;
+
+@Service
+public class RedisServiceFallback implements RedisService {
+
+    @Override
+    public ResponseBodyVO<String> set(@RequestBody RedisParameter redisParameter) {
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE);
+    }
+}

+ 10 - 2
simulation-resource-server/src/main/java/com/css/simulation/resource/system/service/DictService.java

@@ -1,11 +1,12 @@
 package com.css.simulation.resource.system.service;
 
+import api.common.pojo.param.RedisParameter;
 import api.common.pojo.param.system.DictParam;
 import api.common.pojo.po.system.DictPO;
 import api.common.util.JsonUtil;
+import com.css.simulation.resource.feign.RedisService;
 import com.css.simulation.resource.system.mapper.DictMapper;
 import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -18,6 +19,9 @@ public class DictService {
     @Autowired
     DictMapper dictMapper;
 
+    @Autowired
+    RedisService redisService;
+
     public String refreshDicts(DictParam param) throws JsonProcessingException {
         String dictTypes = param.getDictTypes();
         List<String> dictTypeList = Arrays.asList(dictTypes.split(","));
@@ -39,7 +43,11 @@ public class DictService {
             //list 字典
             String dictList = JsonUtil.listToJson(dictPOS);
             //放入缓存 TODO
-
+            RedisParameter parameter = new RedisParameter();
+            parameter.setKey(key);
+            parameter.setValue(dictList);
+            parameter.setMinutes(10);
+            redisService.set(parameter);
             //map 字典
             Map<String, String> map = new HashMap();
             for (DictPO dictPO: dictPOS) {