FeginClientFactory.java 883 B

123456789101112131415161718192021222324252627282930313233343536
  1. package com.ruoyi.iot.openfeign;
  2. import feign.Feign;
  3. import feign.jackson.JacksonDecoder;
  4. import feign.jackson.JacksonEncoder;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. /**
  8. * 缓存
  9. */
  10. public class FeginClientFactory {
  11. /**
  12. * 缓存所有的Fegin客户端
  13. */
  14. private volatile static Map<String, Object> feginClientCache = new HashMap<>();
  15. /**
  16. * 从Map中获取数据
  17. * @return
  18. */
  19. @SuppressWarnings("unchecked")
  20. public static <T> T getFeginClient(Class<T> clazz, String baseUrl){
  21. if(!feginClientCache.containsKey(baseUrl)) {
  22. synchronized (FeginClientFactory.class) {
  23. if(!feginClientCache.containsKey(baseUrl)) {
  24. T feginClient = Feign.builder().decoder(new JacksonDecoder()).encoder(new JacksonEncoder()).target(clazz, baseUrl);
  25. feginClientCache.put(baseUrl, feginClient);
  26. }
  27. }
  28. }
  29. return (T)feginClientCache.get(baseUrl);
  30. }
  31. }