涉及到:this question類型安全「基於schem」* Java *的分層*配置讀/寫庫?
我想要類型安全的前端配置文件。
建議在提及的職位OWNER Project。這看起來是一個很好的解決方案 - 你只需要提供帶註釋的界面,剩下的就是框架詞。
問題是該項目不支持分層配置,並且從項目站點看來它不會很快。
任何類似的項目都支持這個嗎?
編輯 我正在尋找的東西,讓我訪問的值等:
config.getHost();
代替:
config.get("host");
涉及到:this question類型安全「基於schem」* Java *的分層*配置讀/寫庫?
我想要類型安全的前端配置文件。
建議在提及的職位OWNER Project。這看起來是一個很好的解決方案 - 你只需要提供帶註釋的界面,剩下的就是框架詞。
問題是該項目不支持分層配置,並且從項目站點看來它不會很快。
任何類似的項目都支持這個嗎?
編輯 我正在尋找的東西,讓我訪問的值等:
config.getHost();
代替:
config.get("host");
我不知道你有什麼請牢記,但您可以使用YAML進行配置,並且可以將數據「反序列化」爲您選擇的數據結構。即Java對象都是安全的。請參閱Snake YAML恕我直言YAML是最適合作爲文本的分層數據。
我編輯了這個問題。希望它更清晰。 –
@OphirYoktan你可以使用YAML構建一個數據結構,而不需要註釋或者甚至是getter。 –
你可以試試IoC容器。例如。在吉斯這將是:
class MyClass
{
@Inject @Named("host") String host;
@Inject @Named("port") int port;
}
或自定義註釋:
class MyClass
{
@Inject @Host String host;
@Inject @Port int port;
}
聽起來很有趣。你有沒有參考使用guice作爲配置文件的更詳細的解釋? –
@OphirYoktan一個思維轉換的變化是從您的bean中刪除'config',配置參數被注入到一個bean中,而不是由一個來自全局'config'位置的bean所請求的,將依賴關係解耦。有一個guice配置模塊來綁定特定註釋與來自不同來源(環境變量,屬性文件,數據庫,xml配置等)的值。開始尋找這裏:http://code.google.com/p/google-guice/wiki/FrequentlyAskedQuestions。 – kan
@OphirYoktan而且想得更簡單。你爲什麼需要分級配置?你可以用更簡單的解決方案來實現它。例如。只需在包名後面命名參數,例如'com.my.app.some.host','com.my.app.some.port'。 – kan
不太清楚,如果這是要你的意思類型安全的,但commons-configuration支持多種類型安全的get方法,如
Double double = config.getDouble("number");
List<Object> buttons = config.getList("buttons.name");
commons-configuration還支持hierarchical properties
編輯:沒有看到您的編輯,對不起。 有關相關問題,請參閱Bozhos answer。
指出這是不可能的提及的答案是在同一個頁面上提及'所有者',這是'困難的部分'。 –
我不排除代碼生成 - 雖然我寧願避免它。 –