.properties 文件中的条件语句

问题描述 投票:0回答:6

有没有办法可以在

.properties
文件中包含条件语句?

喜欢:

if(condition1)
    xyz = abc
else if(condition2)
    xyz = efg
java properties
6个回答
8
投票

不,这是不可能的。文件格式可免费获取: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");
}

7
投票

属性文件中没有这样的条件语句,也许你会在

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想要的东西


3
投票

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

春天是这样的:

基于 Spring 的 Web 应用程序的环境特定配置?


3
投票

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

xyz.condition1 = abs
xyz.condition2 = efg

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


0
投票

就是这样:

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

0
投票

创建不同的属性,如 application-dev1.properties、application-dev2.properties、application-prod1.properties 和 application-prod2.properties 文件,然后通过设置启用/禁用文件:

spring.profiles.active=dev1
#spring.profiles.active=dev2
#spring.profiles.active=prod1
#spring.profiles.active=prod2

在 application.properties 文件中 详细信息如下: https://devtut.github.io/spring/create-and-use-of-multiple-application-properties-files.html#dev-and-prod-environment-using- different-datasources

© www.soinside.com 2019 - 2024. All rights reserved.