【问题标题】:Guice default value for @Named@Named 的 Guice 默认值
【发布时间】:2016-07-11 04:53:11
【问题描述】:

我正在使用 Guice 从 conf 文件中读取属性

@Inject
@Named("test.var1")
private int var1 = 2;

这里,conf文件中test.var1的值被成功注入到var1中。如果文件中缺少此属性,我希望它默认设置为 2。但是,当属性文件中缺少此属性“test.var1”时,我会收到编译错误。

Explicit bindings are required and java.lang.Integer annotated with @com.google.inject.name.Named(value=test.var1) is not explicitly bound.
  while locating java.lang.Integer annotated with @com.google.inject.name.Named(value=test.var1)
    for parameter 6 at test1.TestParser.<init>(TestParser.java:62)
  at test1.CarbonServerModule.configure(CarbonServerModule.java:41)

1 error
    at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:435)
    at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:154)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:106)
    at com.google.inject.Guice.createInjector(Guice.java:95)
    at com.google.inject.Guice.createInjector(Guice.java:72)
    at test1.Main.<init>(Main.java:198)
    at test1.Main.main(Main.java:244)

有人可以帮我解决我在这里想做的事情吗?

【问题讨论】:

    标签: guice inject named


    【解决方案1】:

    正如错误消息所说,您已将 Guice 配置为 require explicit bindings,因此如果未明确声明已知绑定,它将失败。删除该要求(即允许隐式绑定)和/或标记@Inject 注释optional 就足够了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 2017-05-18
      • 2019-07-05
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      相关资源
      最近更新 更多