.properties文件中的条件语句

时间:2012-06-05 15:09:38

标签: java properties

我们是否可以在.properties文件中包含条件语句?

像:

if(condition1)
    xyz = abc
else if(condition2)
    xyz = efg

5 个答案:

答案 0 :(得分:6)

属性文件中没有这样的条件语句,您可能会在Properties上编写一个包装器来封装您的逻辑

示例:

class MyProperties extends Properties {


    /**
     * 
     * 
     * 
     * @param key
     * @param conditionalMap
     * @return
     */
    public String getProperty(String key, List<Decision> decisionList) {
        if (decisionList == null) {
            return getProperty(key);
        }
        Long value = Long.parseLong(getProperty(key));
        for (Decision decision : decisionList) {
            if (Condition.EQUALS == decision.getCondition() && decision.getValue().equals(value)) {
                return getProperty(decision.getTargetKey());
            }
        }
        return super.getProperty(key);
    }
}

enum Condition {
    EQUALS, GREATER, LESSER

}

class Decision {
    Condition condition;
    String targetKey;
    Long value;
    //accessor

    public Condition getCondition() {
        return condition;
    }

    public void setCondition(Condition condition) {
        this.condition = condition;
    }

    public String getTargetKey() {
        return targetKey;
    }

    public void setTargetKey(String targetKey) {
        this.targetKey = targetKey;
    }

}

所以现在例如,如果你想阅读属性文件,获取年龄类别,如果它大于0且小于10,请阅读kid

也许你可以传递这些条件的清单,

注意:这个设计可以进行很多改进(不是很好的设计),它只是为了说明如何包装属性并添加OP想要的东西

答案 1 :(得分:6)

不,这是不可能的。文件格式免费提供:http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html#load%28java.io.Reader%29

在Java代码中执行此操作:

if (condition1) {
    return properties.getProperty("xyz.1");
}
else if (condition2) {
    return properties.getProperty("xyz.2");
}

答案 2 :(得分:3)

如果您的问题是针对不同环境的不同属性(例如devl,test,perf,prod),则常见解决方案是每个环境的属性文件的不同版本。将环境信息传达给您的应用,并查找文件名后附加正确名称的文件。

对于Spring来说是这样的:

Environment-specific configuration for a Spring-based web application?

答案 3 :(得分:3)

正如@Jigar所说,属性文件中没有条件逻辑。但你可以在那里有两条线,例如类似的东西:

xyz.condition1 = abs
xyz.condition2 = efg

并且,在访问该属性的代码中,将正确的条件附加到密钥。

答案 4 :(得分:0)

这是方式:

xyz[condition1]=abs
xyz[condition2]=efg