0f40b49217b9a8dcf37ea4bd40846a1697701cdc.svn-base 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package cn.com.goldenwater.dcproj.service.impl.system;
  2. import cn.com.goldenwater.dcproj.service.BisInspObjStrategy;
  3. import org.apache.commons.collections.map.HashedMap;
  4. import org.apache.commons.lang3.StringUtils;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.context.ApplicationContext;
  7. import org.springframework.stereotype.Service;
  8. import java.util.Map;
  9. import java.util.Optional;
  10. /**
  11. * Created by jinshui on 2020/4/2.
  12. */
  13. @Service
  14. public class BisInspObjFactory {
  15. @Autowired
  16. private ApplicationContext applicationContext;
  17. private static Map<String, BisInspObjStrategy> map = new HashedMap();
  18. public BisInspObjStrategy createStrategy(String type) {
  19. if (map == null || map.isEmpty()) {
  20. //初始化map
  21. getStrategy();
  22. }
  23. if (!map.containsKey(type)) {
  24. getStrategy();
  25. }
  26. BisInspObjStrategy strategy = map.get(type);
  27. return Optional.ofNullable(strategy).orElseGet(() -> map.get("111"));
  28. }
  29. private void getStrategy() {
  30. Map<String, BisInspObjStrategy> tempMap = applicationContext.getBeansOfType(BisInspObjStrategy.class);
  31. for (BisInspObjStrategy bisInspObjStrategy : tempMap.values()) {
  32. if (StringUtils.isBlank(bisInspObjStrategy.getType())) {
  33. continue;
  34. }
  35. String[] objTypeArr = bisInspObjStrategy.getType().split(",");
  36. for (String objType : objTypeArr) {
  37. if (map.containsKey(objType)) {
  38. continue;
  39. }
  40. map.put(objType, bisInspObjStrategy);
  41. }
  42. }
  43. }
  44. }