package cn.org.rapid_framework.util.holder; import java.net.URL; import java.util.Properties; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.util.Assert; import cn.org.rapid_framework.util.PropertiesHelper; /** * 用于持有Properties,将Propereis变成静态方法使用. PropertiesHolder只能持有一个properties * <pre> * PropertiesHolder初始化 * * <b>spring初始化:</b> * <bean class="cn.org.rapid_framework.util.holder.PropertiesHolder"> * <property name="properties" ref="applicationProperties"/> * </bean> * * <b>java API初始化:</b> * new PropertiesHolder().setProperties(cache) * * <b>如果需要重新初始化Properties,需要</b> * PropertiesHolder.clearHolder(); * new PropertiesHolder().setProperties(cache) * </pre> */ public class PropertiesHolder implements InitializingBean{ private static Log log = LogFactory.getLog(PropertiesHolder.class); public static PropertiesHelper properies = null; public void setProperties(Properties properies) { Assert.isNull(PropertiesHolder.properies,"PropertiesHolder alreade hold properties"); PropertiesHolder.properies = new PropertiesHelper(properies); } // /** // * 重新设置properties // * @param properties // */ // public void resetProperties(Properties properties) { // clearHolder(); // new PropertiesHolder().setProperties(properties); // } /** * 清空 holder,只有清空Holder才可以重新设置 Properties */ public static void clearHolder() { properies = null; } public static void setProperty(String key,String value) { getRequiredHelper().setProperty(key, value); } /** * get readonly Properties **/ public static Properties getProperies() { return (Properties)getRequiredHelper().getProperties().clone(); } public static boolean getBoolean(String key, boolean defaultValue) { return getRequiredHelper().getBoolean(key, defaultValue); } public static Boolean getBoolean(String key) { return getRequiredHelper().getBoolean(key); } public static Object getClassInstance(String key, Object defaultinstance) throws IllegalArgumentException { return getRequiredHelper().getClassInstance(key, defaultinstance); } public static Object getClassInstance(String key) throws IllegalArgumentException { return getRequiredHelper().getClassInstance(key); } public static double getDouble(String key, double defaultValue) { return getRequiredHelper().getDouble(key, defaultValue); } public static Double getDouble(String key) { return getRequiredHelper().getDouble(key); } public static float getFloat(String key, float defaultValue) { return getRequiredHelper().getFloat(key, defaultValue); } public static Float getFloat(String key) { return getRequiredHelper().getFloat(key); } public static int getInt(String key, int defaultValue) { return getRequiredHelper().getInt(key, defaultValue); } public static int[] getIntArray(String key) { return getRequiredHelper().getIntArray(key); } public static Integer getInteger(String key) { return getRequiredHelper().getInteger(key); } public static long getLong(String key, long defaultValue) { return getRequiredHelper().getLong(key, defaultValue); } public static Long getLong(String key) { return getRequiredHelper().getLong(key); } public static String getNullIfBlank(String key) { return getRequiredHelper().getNullIfBlank(key); } public static String getNullIfEmpty(String key) { return getRequiredHelper().getNullIfEmpty(key); } public static String getProperty(String key, String defaultValue) { return getRequiredHelper().getProperty(key, defaultValue); } public static String getProperty(String key) { return getRequiredHelper().getProperty(key); } public static boolean getRequiredBoolean(String key) throws IllegalStateException { return getRequiredHelper().getRequiredBoolean(key); } public static double getRequiredDouble(String key) throws IllegalStateException { return getRequiredHelper().getRequiredDouble(key); } public static float getRequiredFloat(String key) throws IllegalStateException { return getRequiredHelper().getRequiredFloat(key); } public static int getRequiredInt(String key) throws IllegalStateException { return getRequiredHelper().getRequiredInt(key); } public static long getRequiredLong(String key) throws IllegalStateException { return getRequiredHelper().getRequiredLong(key); } public static String getRequiredProperty(String key) throws IllegalStateException { return getRequiredHelper().getRequiredProperty(key); } public static Properties getStartsWithProperties(String prefix) { return getRequiredHelper().getStartsWithProperties(prefix); } public static String[] getStringArray(String key) { return getRequiredHelper().getStringArray(key); } public static URL getURL(String key) throws IllegalArgumentException { return getRequiredHelper().getURL(key); } private static PropertiesHelper getRequiredHelper() { assertHolderInited(); return properies; } private static void assertHolderInited() { if(properies == null) throw new IllegalStateException("PropertiesHolder.properties must be not null, PropertiesHolder not yet init."); } public void afterPropertiesSet() throws Exception { assertHolderInited(); log.info("PropertiesHolder holded properties:"+getProperies()); } }