spring_property
2015-11-26 17:24
316 查看
spring读取配置文件property的过程:
1.propert实质是一个hashtable(线程安全的);
2.spring 将property文件的路径加载到上下文中,使用java.util.properties的load方法装载(put),参见load方法
3.需要注意的是:输入流文件是一个单纯的线性的符合java.io.reader文件格式的,默认格式是 iso-8859-1,这样的话每一个字节都是拉丁字符;否则的话用unicode编码进行解析
private void load0 (LineReader lr) throws IOException {
char[] convtBuf = new char[1024];
int limit;
int keyLen;
int valueStart;
char c;
boolean hasSep;
boolean precedingBackslash;
while ((limit = lr.readLine()) >= 0) {
c = 0;
keyLen = 0;
valueStart = limit;
hasSep = false;
//System.out.println("line=<" + new String(lineBuf, 0, limit) + ">");
precedingBackslash = false;
while (keyLen < limit) {
c = lr.lineBuf[keyLen];
//need check if escaped.
if ((c == '=' || c == ':') && !precedingBackslash) {
valueStart = keyLen + 1;
hasSep = true;
break;
} else if ((c == ' ' || c == '\t' || c == '\f') && !precedingBackslash) {
valueStart = keyLen + 1;
break;
}
if (c == '\\') {
precedingBackslash = !precedingBackslash;
} else {
precedingBackslash = false;
}
keyLen++;
}
while (valueStart < limit) {
c = lr.lineBuf[valueStart];
if (c != ' ' && c != '\t' && c != '\f') {
if (!hasSep && (c == '=' || c == ':')) {
hasSep = true;
} else {
break;
}
}
valueStart++;
}
String key = loadConvert(lr.lineBuf, 0, keyLen, convtBuf);
String value = loadConvert(lr.lineBuf, valueStart, limit - valueStart, convtBuf);
put(key, value);
}
}
1.propert实质是一个hashtable(线程安全的);
2.spring 将property文件的路径加载到上下文中,使用java.util.properties的load方法装载(put),参见load方法
3.需要注意的是:输入流文件是一个单纯的线性的符合java.io.reader文件格式的,默认格式是 iso-8859-1,这样的话每一个字节都是拉丁字符;否则的话用unicode编码进行解析
private void load0 (LineReader lr) throws IOException {
char[] convtBuf = new char[1024];
int limit;
int keyLen;
int valueStart;
char c;
boolean hasSep;
boolean precedingBackslash;
while ((limit = lr.readLine()) >= 0) {
c = 0;
keyLen = 0;
valueStart = limit;
hasSep = false;
//System.out.println("line=<" + new String(lineBuf, 0, limit) + ">");
precedingBackslash = false;
while (keyLen < limit) {
c = lr.lineBuf[keyLen];
//need check if escaped.
if ((c == '=' || c == ':') && !precedingBackslash) {
valueStart = keyLen + 1;
hasSep = true;
break;
} else if ((c == ' ' || c == '\t' || c == '\f') && !precedingBackslash) {
valueStart = keyLen + 1;
break;
}
if (c == '\\') {
precedingBackslash = !precedingBackslash;
} else {
precedingBackslash = false;
}
keyLen++;
}
while (valueStart < limit) {
c = lr.lineBuf[valueStart];
if (c != ' ' && c != '\t' && c != '\f') {
if (!hasSep && (c == '=' || c == ':')) {
hasSep = true;
} else {
break;
}
}
valueStart++;
}
String key = loadConvert(lr.lineBuf, 0, keyLen, convtBuf);
String value = loadConvert(lr.lineBuf, valueStart, limit - valueStart, convtBuf);
put(key, value);
}
}
相关文章推荐
- Struts2工作原理
- java中cookie的操作
- jdk安装
- javac 错误: 编码GBK的不可映射字符
- java new date 与系统时间相差8小时
- Java——与 或 非 异或
- JavaSE(07)(数组高级操作及日期格式)
- JAVA 十六进制与字符串的转换
- 编写调用新浪微博API的Java程序来发送微博
- Spring什么时候实例化bean
- 【Java】try中有return,finally块执行问题
- .NET 调用java webservice保存datetime类型数据为空的解决办法
- maven引入springframework的猫腻
- SpringMvc中的开启注释(整理)
- 沫沫金-XML节点解析(List内容)不依赖任何Jar包_JDK原生函数
- java中栈内存和堆内存初步了解
- struts2,hibernate4,spring3配置时问题汇总及解决办法
- JVM 学习笔记---Java虚拟机栈
- JAVA基础之8种基本数据类型
- spring 有参构注入对象。