Spring属性文件值为数组

时间:2017-03-16 09:31:18

标签: java spring

我正在使用spring framework 4.3.5。

以下是我在config.properties

中的值
purgefile.server1.ip=host1.com
purgefile.server1.username=user1
purgefile.server1.password=pwd1
purgefile.server1.script=$HOME/purge.sh

像这样有16台服务器

我需要将所有这些加载到2维数组中并像

一样访问它
server[0][0] --> ip
server[0][1] --> username
server[0][2] --> password
server[0][3] --> script

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

@ f1sh我想出了这个。但不确定这是否是正确的方法。

public class PurgeFileConfig {
    public static void main(String[] args) throws Exception {
        Resource resource = new ClassPathResource("/config.properties");
        Properties props = PropertiesLoaderUtils.loadProperties(resource);
        int size = Integer.parseInt(props.getProperty("purgefile.server.count"));

        String [] [] purgeFile = new String [size][4];

        for (Entry<?, ?> entry : props.entrySet()) {
            String key = (String) entry.getKey();
            String value = (String) entry.getValue();
            if (key.startsWith("purgefile.")) {
                String [] keyList = key.split("\\.");
                if (!keyList[2].equals("count")) {
                    int idx = Integer.parseInt(keyList[2])-1;
                    if (keyList[3].equals("ip"))
                        purgeFile[idx][0] = value.trim();
                    else if (keyList[3].equals("username"))
                        purgeFile[idx][1] = value.trim();
                    else if (keyList[3].equals("password"))
                        purgeFile[idx][2] = value.trim();
                    else if (keyList[3].equals("script"))
                        purgeFile[idx][3] = value.trim();
                }
            }
        }

        for (String[] temp : purgeFile) {
            System.out.println("(" + temp[0] + ")(" + temp[1] + ")(" + temp[2] + ")(" + temp[3] + ")");
        }
    }
}