ファイル内に条件文を含める方法はあり.properties
ますか?
お気に入り:
if(condition1)
xyz = abc
else if(condition2)
xyz = efg
ファイル内に条件文を含める方法はあり.properties
ますか?
お気に入り:
if(condition1)
xyz = abc
else if(condition2)
xyz = efg
いいえ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が必要なものを追加する方法を説明するためのものです
いいえ、できません。ファイル形式は自由に入手できます: 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");
}
問題が異なる環境 (devl、test、perf、prod など) の異なるプロパティである場合、一般的な解決策は、環境ごとに異なるバージョンのプロパティ ファイルです。環境情報をアプリに伝え、ファイル名に正しい名前が追加されたファイルを探します。
春の場合は次のようになります。
@Jigar が言ったように、プロパティ ファイルには条件ロジックはありません。ただし、次のような 2 行を含めることもできます。
xyz.condition1 = abs
xyz.condition2 = efg
そして、プロパティにアクセスするコードで、適切な条件をキーに追加します。