| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package cn.com.goldenwater.dcproj.service.impl.system;
- import cn.com.goldenwater.dcproj.service.BisInspObjStrategy;
- import org.apache.commons.collections.map.HashedMap;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.ApplicationContext;
- import org.springframework.stereotype.Service;
- import java.util.Map;
- import java.util.Optional;
- /**
- * Created by jinshui on 2020/4/2.
- */
- @Service
- public class BisInspObjFactory {
- @Autowired
- private ApplicationContext applicationContext;
- private static Map<String, BisInspObjStrategy> map = new HashedMap();
- public BisInspObjStrategy createStrategy(String type) {
- if (map == null || map.isEmpty()) {
- //初始化map
- getStrategy();
- }
- if (!map.containsKey(type)) {
- getStrategy();
- }
- BisInspObjStrategy strategy = map.get(type);
- return Optional.ofNullable(strategy).orElseGet(() -> map.get("111"));
- }
- private void getStrategy() {
- Map<String, BisInspObjStrategy> tempMap = applicationContext.getBeansOfType(BisInspObjStrategy.class);
- for (BisInspObjStrategy bisInspObjStrategy : tempMap.values()) {
- if (StringUtils.isBlank(bisInspObjStrategy.getType())) {
- continue;
- }
- String[] objTypeArr = bisInspObjStrategy.getType().split(",");
- for (String objType : objTypeArr) {
- if (map.containsKey(objType)) {
- continue;
- }
- map.put(objType, bisInspObjStrategy);
- }
- }
- }
- }
|