转自;https://www.cnblogs.com/zrbfree/p/6230957.html

 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优先.

  */

 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;

 }

 }

使用spring的DefaultResourceLoader自定义properties文件加载工具类的更多相关文章

  1. 161216、使用spring的DefaultResourceLoader自定义properties文件加载工具类

    import java.io.IOException; import java.io.InputStream; import java.util.NoSuchElementException; imp ...

  2. log4j 日志脱敏处理 + java properties文件加载

    Java 加载Properties 配置文件: ResourceBundle bundle = ResourceBundle.getBundle("log4j_filter"); ...

  3. Android 菊花加载工具类

    先看看实现效果图 1.首先自定义一个类继承系统ProgressDialog /** * Created by hanbao0928 on 2018/11/1. */ public class Dial ...

  4. JAVA中自定义properties文件介绍

    Gradle中的使用 1. 使用gradle.properties buid.gradle 和 gradle.properties可以项目使用,在同一个项目中,build.gradle可以直接获取其同 ...

  5. jdbc.properties不能加载到tomcat项目下面

    javaweb项目的一个坑,每次重启tomcat都不能将项目中的jdbc.properties文件加载到tomcat项目对应的classes目录下面,得手动粘贴到该目录下.

  6. android实现异步加载图片类

    其中牵涉到的关键知识点 1,回调机制,不过回调接口的实现方式有多种多样,可以是一个类继承该接口,也可以是作为一个方法参数: 可以参照自己的这篇博客: http://www.cnblogs.com/bo ...

  7. spring入门(二)【加载properties文件】

    在开发过程当中需要用到配置信息,这些信息不能进行硬编码,这时配置文件是一个比较好的方式,java提供了properties格式的文件,以键值对的方式保存信息,在读取的时候通过键获得键对应的值,spri ...

  8. Spring Boot自定义配置与加载

    Spring Boot自定义配置与加载 application.properties主要用来配置数据库连接.日志相关配置等.除了这些配置内容之外,还可以自定义一些配置项,如: my.config.ms ...

  9. Spring项目中Properties不能加载多个的问题

    A模块和B模块都分别拥有自己的Spring XML配置,并分别拥有自己的配置文件: A模块 A模块的Spring配置文件如下: <?xml version="1.0" enc ...

随机推荐

  1. javamail实现注册激活邮件

    http://www.jb51.net/article/111926.htm https://www.cnblogs.com/ganchuanpu/archive/2016/11/29/6115691 ...

  2. 测试自动化接口jenkins配置

    <br/><font color="red" size"3" face="微软雅黑">本邮件是程序自动下发,请勿回复 ...

  3. Leetcode 174.地下城游戏

    地下城游戏 一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主. ...

  4. 【Linux】date命令用法详解(日期格式)

    inux下date命令用法 date [OPTION]… [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] date命令参数 ...

  5. c/c++ 位域的概念

    位域 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便,C语言又提供了一种数 ...

  6. 南邮CTF密码学,mixed_base64

    # -*- coding:utf-8 -*- from base64 import * flag = open("code.txt").readline() # 读取密文 for ...

  7. memcache适用和不适用场景[转载]

    适用memcached的业务场景:1)如果网站包含了访问量很大的动态网页,因而数据库的负载将会很高.由于大部分数据库请求都是读操作,那么memcached可以显著地减小数据库负载.2)如果数据库服务器 ...

  8. 洛谷——P1164 小A点菜

    P1164 小A点菜 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:“随便点”. 题目描述 不过u ...

  9. AtCoder Grand Contest 012 D Colorful Balls

    题意: 有N个球排成一行,第i个球颜色为ci, 权为wi, 如果两个同色球权值和 <= X 则它们可以交换: 如果两个异色球权值和 <= Y 则它们可以交换:不限制交换次数,求能到达的颜色 ...

  10. Ubuntu 16.04中iptables的工具简介(iptables/iptables-restore/iptables-xml/iptables-apply/iptables-save)

    Ubuntu 16.04中安装的iptables版本为1.6.0,官方参考:http://www.linuxfromscratch.org/blfs/view/cvs/postlfs/iptables ...