package com.jspxcms.common.util; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.TreeMap; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; /** * Spring properties工具类 * * @author liufang * */ public class Property implements BeanFactoryAware { private BeanFactory beanFactory; private Properties properties; public void setProperties(Properties properties) { this.properties = properties; } /** * 获得property list * * @param prefix * 前缀 * @return */ public List<String> getList(String prefix) { if (properties == null || prefix == null) { return Collections.emptyList(); } List<String> list = new ArrayList<String>(); Enumeration<?> en = properties.propertyNames(); String key; while (en.hasMoreElements()) { key = (String) en.nextElement(); if (key.startsWith(prefix)) { list.add(properties.getProperty(key)); } } return list; } /** * 获取有序的列表 * * eg:List<String> types = getSortedList("modelType."); * * <ul> * <li>modelType.100=info * <li>modelType.200=node * <li>modelType.300=node_home * </ul> * * @param prefix * @return */ public List<String> getSortedList(String prefix) { if (properties == null || prefix == null) { return Collections.emptyList(); } Map<Integer, String> map = new TreeMap<Integer, String>(); Enumeration<?> en = properties.propertyNames(); String key; int len = prefix.length(); while (en.hasMoreElements()) { key = (String) en.nextElement(); if (key.startsWith(prefix)) { map.put(Integer.parseInt(key.substring(len)), properties.getProperty(key)); } } List<String> list = new ArrayList<String>(map.values()); return list; } public Map<String, String> getMap(String prefix) { if (properties == null || prefix == null) { return Collections.emptyMap(); } Map<String, String> map = new HashMap<String, String>(); Enumeration<?> en = properties.propertyNames(); String key; int len = prefix.length(); while (en.hasMoreElements()) { key = (String) en.nextElement(); if (key.startsWith(prefix)) { map.put(key.substring(len), properties.getProperty(key)); } } return map; } public Properties getProperties(String prefix) { Properties props = new Properties(); if (properties == null || prefix == null) { return props; } Enumeration<?> en = properties.propertyNames(); String key; int len = prefix.length(); while (en.hasMoreElements()) { key = (String) en.nextElement(); if (key.startsWith(prefix)) { props.put(key.substring(len), properties.getProperty(key)); } } return props; } public <T> Map<String, T> getBeanMap(String prefix, Class<T> requiredType) { Map<String, String> nameMap = getMap(prefix); if (nameMap.isEmpty()) { return Collections.emptyMap(); } Map<String, T> objectMap = new HashMap<String, T>(nameMap.size()); String key, value; for (Map.Entry<String, String> entry : nameMap.entrySet()) { key = entry.getKey(); value = entry.getValue(); objectMap.put(key, beanFactory.getBean(value, requiredType)); } return objectMap; } public Map<String, Object> getBeanMap(String prefix) { return getBeanMap(prefix, Object.class); } public <T> Map<String, T> getBeanMap(String prefix, String className) throws ClassNotFoundException { @SuppressWarnings("unchecked") Class<T> clazz = (Class<T>) Class.forName(className); return getBeanMap(prefix, clazz); } public <T> List<T> getBeanList(String prefix, Class<T> requiredType) { List<String> nameList = getList(prefix); if (nameList.isEmpty()) { return Collections.emptyList(); } List<T> objectList = new ArrayList<T>(nameList.size()); for (String name : nameList) { objectList.add(beanFactory.getBean(name, requiredType)); } return objectList; } public List<Object> getBeanList(String prefix) { return getBeanList(prefix, Object.class); } public <T> List<T> getBeanList(String prefix, String className) throws ClassNotFoundException { @SuppressWarnings("unchecked") Class<T> clazz = (Class<T>) Class.forName(className); return getBeanList(prefix, clazz); } public void setBeanFactory(BeanFactory beanFactory) throws BeansException { this.beanFactory = beanFactory; } }