当前位置: 首页 > 知识库问答 >
问题:

Guice Names.bind属性(binder(),属性)在模块的输出?

岳永思
2023-03-14

我使用一个外部服务来提供属性,但我想让这些属性以@Named(…)的形式可用瓦尔斯。尝试在配置方法中执行此操作会因npe而失败:

Names.bindProperties(binder(), myPropRetriever.getProperties());

失败是因为myPropRetriever直到guice完成它的工作才出现。我明白为什么这是有意义的——有人知道任何可能有效的时髦黑客吗?在这种情况下会很方便...

共有1个答案

颛孙炜
2023-03-14

感谢durron597为我指出了相关的问题,这让我有足够的理解力。答案是使用儿童喷油器对之前的喷油器输出采取措施。下面的例子:

Injector propInjector = Guice.createInjector(new PropertiesModule());
PropertiesService propService = propInjector.getInstance(PropertiesService.class);
Injector injector = propInjector.createChildInjector(new MyModule(Objects.firstNonNull(propService.getProperties(), new Properties())));

注射器现在是您的注射器的应用程序的剩余部分。

然后在MyModule中,您可以对创建的对象执行操作:

public class MyModule extends AbstractModule {
private final Properties properties;

public MyModule(Properties properties){
    this.properties=properties;
}

@Override
protected void configure() {
    // export all the properties as bindings
    Names.bindProperties(binder(), properties);

    // move on to bindings
    // bind(..);
}

}

以防对其他人有帮助。。!

 类似资料:
  • 在Elixir中,模块属性(module attributes)主要服务于三个目的: 作为一个模块的注解(annotations),通常附加上用户或虚拟机会用到的信息 作为常量 在编译时作为一个临时的模块存储机制 下面让我们来一一讲解。 作为注解(annotations) Elixir从Erlang带来了模块属性的概念。如: defmodule MyServer do @vsn 2 end 这

  • 问题内容: 我有一个包含许多文件的目录。每个文件定义一些类。我的目录中也有一个空白。 例如: 我正在尝试导入和访问所有这些文件中定义的类: 这给我一个错误的说法,即没有属性。为什么?为什么我只能访问其中一个文件(),而不能访问其他文件? 问题答案: 问题是子模块不会自动导入。您必须显式导入模块: 如果您真的坚持要在导入时可用,则可以输入以下内容: 然后,这将按预期工作:

  • 通常我们把对象的非函数成员叫属性。 对于元素节点来说,其属性大体分为两类,固有属性与自定义属性(特性)。固有属性一般遵循驼峰命名风格,拥有默认值,并且无法删除。 自定义属性是用户随意添加的属性值对,由于元素节点也是一个普通的javascript对象,没有什么严格的访问操作,因此命名风格林林总总,值的类型也是乱七八糟。但是随意添加属性显然不够安全,比如引起循环引用等,因此,浏览器提供了一组API来供

  • 当我使用: 我得到这个错误: 完整代码: 梯度提升分类器模型为:

  • 我使用要连接到mysql,下面是我的Python语句: 但是有一个错误,这里是日志: 这是我的代码: 我已经创建数据库在谢谢

  • 问题内容: 我正在尝试建立一个ARIMA进行异常检测。我需要找到时间序列图的移动平均值,为此我尝试使用pandas 0.23 错误:跟踪(最近一次调用最近):文件“ C:\ Program Files \ Python36 \ lastmainprogram.py”,行74,在moving_avg = pd.rolling_mean(ts_log,12)中AttributeError:模块’pan