当前位置: 首页 > 面试题库 >

Guice和常规应用程序配置

龙珂
2023-03-14
问题内容

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

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

我看到两个选择:

  • 使用另一个库,例如Apache Commons Configuration,它支持文件和JDBC配置源(以及许多其他源)

要么

  • 在Guice中使用基于文件的插件,例如guice-xml-config来存储应用程序选项(如果需要,可以稍后配置DI部分)。

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


问题答案:

在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")



 类似资料:
  • 我正在使用Guice和Dropwizard开发一个应用程序,在其中我们创建了不同的包,如Guice包、migrations包等,并将它们添加到initialize()方法中的bootstrap中。 注意:我知道另一种方法,您可以在run()方法中创建Module类的对象,用于创建注入器(配置和环境对象在MyModule类的构造函数中作为参数传递)。但这需要我在run()方法中注册所有托管对象和所有

  • 我尝试了一个显示其他响应的测试用例,我将一步一步地解释它: > 我在我的设备上安装了MDM配置文件,这提示我安装了一个应用程序,并且我成功地安装了它。应用程序已进入“应用程序中的配置文件”部分。 然后我手动删除了应用程序。

  • 问题内容: 我已经在Web应用程序中使用Guice了,没有问题,我想在桌面应用程序中使用它。我当然缺少一件事- 一种告诉我的应用程序如何绑定所有内容并知道什么是什么的方法。在Web应用程序中,我在Application类中对此进行了声明,如何在桌面应用程序中进行声明? 这是我正在使用的相关代码: 我的主班: 我当然在上projectRepo.persist(newProject); 那么,我还需要

  • 问题内容: 我有一个Swing应用程序,我希望将其从意大利面条转换为对Guice使用依赖项注入。使用Guice提供诸如配置和任务队列之类的服务的过程非常好,但是我现在是从应用程序的GUI开始的,不确定如何进行。 该应用程序基本上是,在中带有一堆标签。每个选项卡都是一个单独的子类,该子类列出了各种组件,并且需要服务才能在按下某些按钮时执行操作。 在当前应用程序中,这看起来像这样: 显然,这并不完全遵

  • 我正在重构一个遗留的Java代码库,以向泽西资源类提供Guice驱动的依赖注入。 这是一个精简的应用程序,它使用传统的Jetty/泽西设置(请参阅 我无法理解各种组件以及它们是如何协同工作的。因此,我不断得到以下错误: 如果我在< code>FooResource的构造函数中直接访问Guice注入器,它就会工作。这告诉我Jetty/Jersey的东西被正确地设置来服务资源,Guice能够正确地构建

  • 我正在使用log4j2库来管理日志记录过程。我创建了一个名为log4j2的配置文件。包含appender和logger配置的xml。然后,我在每个类中定义了一个记录器 我没有在任何地方指定conf文件的名称,所以我认为库隐式地获取并读取它。 现在,我需要以jar文件的形式提供我的应用程序,所以我需要使配置文件可用,以便用户可以修改和配置它。 在我的例子中,我建议在jar文件级别创建一个XXX文件夹