fff39b574826fae17334d382a2f1b4ecf7c67a3e.svn-base 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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.lang.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. /**
  10. * Created by jinshui on 2020/4/2.
  11. */
  12. @Service
  13. public class BisInspObjFactory {
  14. @Autowired
  15. private ApplicationContext applicationContext;
  16. private static Map<String, BisInspObjStrategy> map = new HashedMap();
  17. public BisInspObjStrategy createStrategy(String type) {
  18. if (map == null || map.isEmpty()) {
  19. //初始化map
  20. getStrategy();
  21. }
  22. if (!map.containsKey(type)) {
  23. getStrategy();
  24. }
  25. return map.get(type);
  26. }
  27. private void getStrategy() {
  28. Map<String, BisInspObjStrategy> tempMap = applicationContext.getBeansOfType(BisInspObjStrategy.class);
  29. for (BisInspObjStrategy bisInspObjStrategy : tempMap.values()) {
  30. if (StringUtils.isBlank(bisInspObjStrategy.getType())) {
  31. continue;
  32. }
  33. String[] objTypeArr = bisInspObjStrategy.getType().split(",");
  34. for (String objType : objTypeArr) {
  35. if (map.containsKey(objType)) {
  36. continue;
  37. }
  38. map.put(objType, bisInspObjStrategy);
  39. }
  40. }
  41. }
  42. }