类型安全的“基于schem”*用于Java的分层*配置读/写库?

时间:2014-01-15 12:03:13

标签: java configuration

与:this question

相关

我希望配置文件的类型安全前端。

建议在提及的帖子中OWNER Project。这似乎是一个很好的解决方案 - 你只需要提供带注释的界面 - 其余的是框架字。

问题是该项目不支持分层配置,而且从项目站点看来它不会很快就会出现。

任何支持此项目的类似项目?

修改的 我正在寻找的东西将允许我访问如下值:

config.getHost();

而不是:

config.get("host");

3 个答案:

答案 0 :(得分:1)

我不确定您的确切想法,但您可以使用YAML进行配置,并且可以将数据“反序列化”为您选择的数据结构。即Java对象都是安全的。请参阅Snake YAML恕我直言,YAML是分层数据最好的文本。

答案 1 :(得分:1)

您可以尝试IoC容器。例如。在guice中它将是:

class MyClass
{
   @Inject @Named("host") String host;
   @Inject @Named("port") int port;
}

或使用自定义注释:

class MyClass
{
   @Inject @Host String host;
   @Inject @Port int port;
}

答案 2 :(得分:1)

不确定这是否意味着类型安全,但commons-configuration支持多种类型的安全获取方法,如

Double double = config.getDouble("number");
List<Object> buttons = config.getList("buttons.name");

commons-configuration也支持hierarchical properties

编辑:没看到你的编辑,抱歉。 有关问题,请参阅Bozhos answer