博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
装载Properties资源文件的项目中使用
阅读量:5937 次
发布时间:2019-06-19

本文共 3228 字,大约阅读时间需要 10 分钟。

ssm项目中打算将发短信的每小时每天的限定变成可配置的。于是将配置信息写在资源文件中,现在有两种方式加载资源文件,一个是使用spring注入方式,@Value注解注入,当然,前面需要在项目中装载。第二种使用的是Properties类装载properties文件,然后获取。

这个我有点笨,spring装载失败了,所以使用第二种方式。第二种方式获取又恶心到了我,就是关于资源文件地址我有点拿不定,还有就是何时进行初始化,如何自动调用,想法是静态代码块,这个时候你需要注意static块的装载顺序。我用得不灵活,然后看了下公司的工具类,感觉挺厉害的,学会抽象封装,造轮子,耶耶耶!

 

代码:

package com.ref.sms.util.constant;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.IOException;import java.io.InputStream;import java.util.HashSet;import java.util.Properties;import java.util.Set;/**  * 常量配置类,从指定文件读取常量   *    */   public class ConfigurableContants {     private  static final Logger logger = LoggerFactory.getLogger(ConfigurableContants.class);     protected static Properties p = new Properties();          protected static String propertyFilePath = null;        protected static void init(String propertyFileName) {         InputStream in = null;           try {               in = ConfigurableContants.class.getResourceAsStream(propertyFileName);             if (in != null)                   p.load(in);           } catch (IOException e) {               logger.error("load " + propertyFileName + " into Contants error");           } finally {               if (in != null) {                   try {                     propertyFilePath = propertyFileName;                     in.close();                   } catch (IOException e) {                   }               }           }       }          protected static String getProperty(String key, String defaultValue) {           return p.getProperty(key, defaultValue);       }          protected static final String getProperty(String key) {           return getProperty(key, "");       }          /**       * 取以","分割的集合属性       *       * @param key       * @param defaultValue       * @return       */       protected static Set
getSetProperty(String key, String defaultValue) { String[] strings = p.getProperty(key, defaultValue).split(","); HashSet
hashSet = new HashSet
(strings.length); for (String string : strings) { hashSet.add(string.trim()); } return hashSet; } protected static Set
getSetProperty(String key) { return getSetProperty(key, ""); } protected static void refreshInit(){ init(propertyFilePath); } } package com.ref.sms.util.constant;/** * Created by zhen on 2017-07-17. */public class SmsConstants extends ConfigurableContants{ static{ init("/smsConfiguration.properties"); } public static final String SMS_DAY_LIMIT = getProperty("sms_day_limit"); public static final String SMS_HOUR_LIMIT = getProperty("sms_hour_limit");}

使用的是Class类的getResourceAsStream方法获取资源。

public  getResourceAsStream( name)
查找具有给定名称的资源。查找与给定类相关的资源的规则是通过定义类的 实现的。此方法委托此对象的类加载器。如果此对象通过引导类加载器加载,则此方法将委托给
ClassLoader.getSystemResourceAsStream(java.lang.String)

在委托前,使用下面的算法从给定的资源名构造一个绝对资源名:

  • 如果 name'/' 开始 ('\u002f'),则绝对资源名是 '/' 后面的 name 的一部分。
  • 否则,绝对名具有以下形式:
    modified_package_name/name

    其中 modified_package_name 是此对象的包名,该名用 '/' 取代了 '.' ('\u002e')。

 

参数:
name - 所需资源的名称
返回:
一个 对象;如果找不到带有该名称的资源,则返回
null
抛出:
- 如果
name
null

转载地址:http://tpvtx.baihongyu.com/

你可能感兴趣的文章
php gettext
查看>>
Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份
查看>>
练习方法--刻意练习
查看>>
多进程
查看>>
Java方式 MySQL数据库连接
查看>>
MATLAB2012 licence失效解决方法
查看>>
Android ListView初始化将实例化多少个item
查看>>
[LeetCode] Factorial Trailing Zeroes 阶乘末尾0
查看>>
消除字号标签<h1><h2><h3>的自动换行
查看>>
关于ListView的一些不常用到的属性
查看>>
201521123040《Java程序设计》第13周学习总结
查看>>
Mybatis的分页插件com.github.pagehelper
查看>>
Rand工具类
查看>>
iOS边练边学--cocoaPods管理第三方框架--命令行方式实现
查看>>
线程学习笔记(一)
查看>>
黄聪:bootstrap的模态框modal插件在苹果iOS Safari下光标偏离问题解决方案
查看>>
黄聪:在Windows下搭建***服务器
查看>>
git常用命令
查看>>
[Android学习笔记]EditText的使用
查看>>
《活出生命的意义》读后感
查看>>