-
properties配置文件
-
key = value :等号左边的为配置key,右边的为配置value(value值会去除前后的空格)
-
#来区分注释
-
一个基础的配置文件
-
#测试 key = value user.name = lpy user.age = 18 user.skill = java,python,js,shell
-
-
配置文件加载
-
/** * 从文件中读取配置 */ public class PropertiesUtil{public static Properties loadProperties(String propertyFile)throws IOException{Properties config = new Properties();config.load(PropertiesUtil.class.getClassLoader().getResourceAsStream(propertyFile));return config;} }
-
直接使用Properities#config就可以读取配置文件内容,并赋值到java对象
-
Properies类的继承关系,他的父类是HashTable,也就是说他的本质是Map对象
-
public class Properties extends HashTable<Object,Object>{}
-
-
Pro[erties对象使用
-
因为Properties是继承自HashTable,而HashTable是线程安全的Map容器,因此Properties也是线程安全的
-
配置获取
-
//获取配置属性 public String getProperty(String key){Object oval = super.get(key);String sval = (oval instanceof String) ? (String)oval : null;return ((sval == null) && (defaults != null)) ? defaults.getProperty(key) : sval; } //获取配置属性,如果不存在,则返回默认值 public String getProperty(String key,String defaultValue){String val = getProperty(key);return (val == null) ? defaultValue : val; }
-
并发效率很低的原因
-
关键点就在第一个方法super.get(),他的源码是
-
public synchronized V get(Object key){}
-
方法上有synchronized,所以并发环境下性能表现不会特别好
-
-
-
配置更新
-
public synchronized Object setProperty(String key,String value){return put(key,value); }
-
-
-
-