zoukankan      html  css  js  c++  java
  • 读取property配置的N种方式

    • @Value注解

    @Value("${ddd}")

    • <!-- 加载配置属性文件 -->

    <context:property-placeholder ignore-unresolvable="true" location="classpath:jeesite.properties" />


    • <!-- 读取配置文件 -->

    <bean
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
    <list>
    <value>classpath:thrift-client.properties</value>
    <value>classpath:jeesite.properties</value>
    </list>
    </property>
    </bean>

    • util:properties配置

    <!-- 加载应用属性实例,可通过 @Value("#{APP_PROP['jdbc.driver']}") String jdbcDriver 方式引用 -->
    <util:properties id="APP_PROP" location="classpath:jeesite.properties" local-override="true"/>

    • java.util.Properties

    Properties pros = new Properties();
    pros.load(SendDingDingUtil.class.getResourceAsStream("/dingding.properties"));
    pros.getProperty("dingding.request.key");

    • 网上有基于Properties包装的PropertiesLoader工具,更易用一些。

    /**
    * 属性文件加载对象
    */
    private static PropertiesLoader loader = new PropertiesLoader("jeesite.properties");
    loader.getProperty("yyReturnMerchantPay")

     PropertiesLoader.java代码:

    /**
     * Copyright (c) 2005-2011 springside.org.cn
     * 
     * $Id: PropertiesLoader.java 1690 2012-02-22 13:42:00Z calvinxiu $
     */
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.NoSuchElementException;
    import java.util.Properties;
    
    import org.apache.commons.io.IOUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.core.io.DefaultResourceLoader;
    import org.springframework.core.io.Resource;
    import org.springframework.core.io.ResourceLoader;
    
    /**
     * Properties文件载入工具类. 可载入多个properties文件, 相同的属性在最后载入的文件中的值将会覆盖之前的值,但以System的Property优先.
     * @author W.X
     * @version 2013-05-15
     */
    public class PropertiesLoader {
    
        private static Logger logger = LoggerFactory.getLogger(PropertiesLoader.class);
    
        private static ResourceLoader resourceLoader = new DefaultResourceLoader();
    
        private final Properties properties;
    
        public PropertiesLoader(String... resourcesPaths) {
            properties = loadProperties(resourcesPaths);
        }
    
        public Properties getProperties() {
            return properties;
        }
    
        /**
         * 取出Property,但以System的Property优先,取不到返回空字符串.
         */
        private String getValue(String key) {
            String systemProperty = System.getProperty(key);
            if (systemProperty != null) {
                return systemProperty;
            }
            if (properties.containsKey(key)) {
                return properties.getProperty(key);
            }
            return "";
        }
    
        /**
         * 取出String类型的Property,但以System的Property优先,如果都为Null则抛出异常.
         */
        public String getProperty(String key) {
            String value = getValue(key);
            if (value == null) {
                throw new NoSuchElementException();
            }
            return value;
        }
    
        /**
         * 取出String类型的Property,但以System的Property优先.如果都为Null则返回Default值.
         */
        public String getProperty(String key, String defaultValue) {
            String value = getValue(key);
            return value != null ? value : defaultValue;
        }
    
        /**
         * 取出Integer类型的Property,但以System的Property优先.如果都为Null或内容错误则抛出异常.
         */
        public Integer getInteger(String key) {
            String value = getValue(key);
            if (value == null) {
                throw new NoSuchElementException();
            }
            return Integer.valueOf(value);
        }
    
        /**
         * 取出Integer类型的Property,但以System的Property优先.如果都为Null则返回Default值,如果内容错误则抛出异常
         */
        public Integer getInteger(String key, Integer defaultValue) {
            String value = getValue(key);
            return value != null ? Integer.valueOf(value) : defaultValue;
        }
    
        /**
         * 取出Double类型的Property,但以System的Property优先.如果都为Null或内容错误则抛出异常.
         */
        public Double getDouble(String key) {
            String value = getValue(key);
            if (value == null) {
                throw new NoSuchElementException();
            }
            return Double.valueOf(value);
        }
    
        /**
         * 取出Double类型的Property,但以System的Property优先.如果都为Null则返回Default值,如果内容错误则抛出异常
         */
        public Double getDouble(String key, Integer defaultValue) {
            String value = getValue(key);
            return value != null ? Double.valueOf(value) : defaultValue;
        }
    
        /**
         * 取出Boolean类型的Property,但以System的Property优先.如果都为Null抛出异常,如果内容不是true/false则返回false.
         */
        public Boolean getBoolean(String key) {
            String value = getValue(key);
            if (value == null) {
                throw new NoSuchElementException();
            }
            return Boolean.valueOf(value);
        }
    
        /**
         * 取出Boolean类型的Property,但以System的Property优先.如果都为Null则返回Default值,如果内容不为true/false则返回false.
         */
        public Boolean getBoolean(String key, boolean defaultValue) {
            String value = getValue(key);
            return value != null ? Boolean.valueOf(value) : defaultValue;
        }
    
        /**
         * 载入多个文件, 文件路径使用Spring Resource格式.
         */
        private Properties loadProperties(String... resourcesPaths) {
            Properties props = new Properties();
    
            for (String location : resourcesPaths) {
    
    //            logger.debug("Loading properties file from:" + location);
    
                InputStream is = null;
                try {
                    Resource resource = resourceLoader.getResource(location);
                    is = resource.getInputStream();
                    props.load(is);
                } catch (IOException ex) {
                    logger.info("Could not load properties from path:" + location + ", " + ex.getMessage());
                } finally {
                    IOUtils.closeQuietly(is);
                }
            }
            return props;
        }
    }
    View Code
  • 相关阅读:
    poi隐藏列
    凯西太太的果园
    java中不可变对象深入理解
    excel添加空白行的快捷键
    如何在多个页面中,引入一个公共组件
    对后端返回的数据进行适配
    我与时间管理的故事
    在前端团队的那些日子(初见)
    我是这样做时间管理的(下)
    我是这样做时间管理的(上)
  • 原文地址:https://www.cnblogs.com/buguge/p/11102718.html
Copyright © 2011-2022 走看看