Guice和一般应用程序配置

mjn*_*mjn 20 java configuration guice apache-commons-config

对于用Java编写的监控软件,我考虑使用Google Guice作为DI提供程序.项目需要从外部资源(文件或数据库)加载其配置.该应用程序旨在以独立模式或servlet容器运行.

目前,配置不包含依赖项注入的绑定或参数,只有一些全局应用程序设置(JDBC连接定义和关联的数据库管理/监视对象).

我看到两个选择:

要么

  • 使用Guice -xml-config之类的Guice基于文件的插件来存储应用程序选项(如果有必要,这将允许稍后配置DI部分).

您是否建议将Guice用于这两项任务,或者将一般应用程序配置与依赖注入分开?您认为哪些优点和缺点最重要?

Lan*_*dei 33

在Guice模块中粘贴属性文件很简单:

public class MyModule extends AbstractModule {

  @Override
  protected void configure() {
    try {
        Properties properties = new Properties();
        properties.load(new FileReader("my.properties"));
        Names.bindProperties(binder(), properties);
    } catch (IOException ex) {
        //...
    }
  }
} 
Run Code Online (Sandbox Code Playgroud)

之后,很容易从Properties切换到其他配置源.

[编辑]

顺便说一下,您可以通过注释来获取注入的属性@Named("myKey").


EII*_*PII 5

检查州长库:

https://github.com/Netflix/governator/wiki/Configuration-Mapping

您将获得一个 @Configuration 注释和几个配置提供程序。在代码中,它有助于查看您使用的配置参数的位置:

@Configuration("configs.qty.things")
private int   numberOfThings = 10;
Run Code Online (Sandbox Code Playgroud)

此外,您将在启动时获得一份不错的配置报告:

https://github.com/Netflix/governator/wiki/Configuration-Mapping#configuration-documentation