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.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; import java.util.Map; /** * Created by jinshui on 2020/4/2. */ @Service public class BisInspObjFactory { @Autowired private ApplicationContext applicationContext; private static Map map = new HashedMap(); public BisInspObjStrategy createStrategy(String type) { if (map == null || map.isEmpty()) { //初始化map getStrategy(); } if (!map.containsKey(type)) { getStrategy(); } return map.get(type); } private void getStrategy() { Map 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); } } } }