您的位置:首页 > 编程语言 > Java开发

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);

        }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: