5

ファイル内に条件文を含める方法はあり.propertiesますか?

お気に入り:

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

5 に答える 5

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が必要なものを追加する方法を説明するためのものです

于 2012-06-05T15:11:34.420 に答える
7

いいえ、できません。ファイル形式は自由に入手できます: 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");
}
于 2012-06-05T15:13:42.823 に答える
3

問題が異なる環境 (devl、test、perf、prod など) の異なるプロパティである場合、一般的な解決策は、環境ごとに異なるバージョンのプロパティ ファイルです。環境情報をアプリに伝え、ファイル名に正しい名前が追加されたファイルを探します。

春の場合は次のようになります。

Spring ベースの Web アプリケーションの環境固有の構成?

于 2012-06-05T15:17:12.547 に答える
3

@Jigar が言ったように、プロパティ ファイルには条件ロジックはありません。ただし、次のような 2 行を含めることもできます。

xyz.condition1 = abs
xyz.condition2 = efg

そして、プロパティにアクセスするコードで、適切な条件をキーに追加します。

于 2012-06-05T15:17:15.173 に答える