对于用Java编写的监控软件,我考虑使用Google Guice作为DI提供者。项目需要从外部资源(文件或数据库)加载其配置。该应用程序设计为以独立模式或在servlet容器中运行。
目前,该配置不包含用于依赖注入的绑定或参数,只包含一些全局应用程序设置(JDBC连接定义和相关的数据库管理/监视对象)。
我看到了两个选择:
或
您是否建议将Guice用于这两个任务,或者将常规应用程序配置与依赖项注入分开?你认为最重要的优点和缺点是什么?
发布于 2011-01-26 22:58:21
在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) {
//...
}
}
}
之后,很容易从属性切换到其他配置源。
编辑
顺便说一句,您可以通过使用@Named("myKey")
对其进行注释来获得注入属性。
发布于 2014-01-24 21:36:06
检查调节器库:
https://github.com/Netflix/governator/wiki/Configuration-Mapping
您将获得一个@Configuration注释和几个配置提供程序。在代码中,它有助于了解您使用配置参数的位置:
@Configuration("configs.qty.things")
private int numberOfThings = 10;
此外,您将在启动时获得一个很好的配置报告:
https://github.com/Netflix/governator/wiki/Configuration-Mapping#configuration-documentation
发布于 2015-12-24 02:07:12
试试maven central上提供的Guice configuration,它支持属性、HOCON和JSON格式。
您可以将属性从文件application.conf注入到您的服务中,如下所示:
@BindConfig(value = "application")
public class Service {
@InjectConfig
private int port;
@InjectConfig
private String url;
@InjectConfig
private Optional<Integer> timeout;
@InjectConfig("services")
private ServiceConfiguration services;
}
您必须将模块ConfigurationModule安装为
public class GuiceModule extends AbstractModule {
@Override
protected void configure() {
install(ConfigurationModule.create());
requestInjection(Service.class);
}
}
https://stackoverflow.com/questions/4805874
复制相似问题