涉及到: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。
指出这是不可能的提及的答案是在同一个页面上提及'所有者',这是'困难的部分'。 –
我不排除代码生成 - 虽然我宁愿避免它。 –