有沒有辦法讓我們在.properties
文件中有條件語句?.properties文件中的條件語句
,如:
if(condition1)
xyz = abc
else if(condition2)
xyz = efg
有沒有辦法讓我們在.properties
文件中有條件語句?.properties文件中的條件語句
,如:
if(condition1)
xyz = abc
else if(condition2)
xyz = efg
不,這是不可能的。文件格式免費提供: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");
}
沒有在性質沒有這樣的條件語句文件時,可能是你會寫一個包裝過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);
}
}
and
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
所以可能是你可以通過這樣的條件列表:
note:這個設計可以進行很多改進(不是很好的設計),它只是爲了說明如何包裝屬性和添加的東西,OP想要
如果你的問題是不同的環境不同的屬性(如DEVL,測試,香水,正式版),常見的解決方案是不同的版本屬性的文件,每個環境。將環境信息傳遞到您的應用程序,並查找名稱附加了正確名稱的文件。
事情是這樣的春天:
Environment-specific configuration for a Spring-based web application?
正如@Jigar說,有一個屬性文件沒有條件邏輯。但你可以在那裏有兩條線,例如例如:
xyz.condition1 = abs
xyz.condition2 = efg
並且在您的代碼中訪問該屬性時,將正確的條件附加到該鍵。
你能舉個例子嗎? – Piyush
更新回答請檢查 –