java - Guice 如何将带注释的常量重新绑定(bind)到另一个名称?

标签 java guice

假设我有一个值绑定(bind)到某个模块中用“xxx”注释的字符串,但我希望可以从另一个注释名称(例如“yyy”)获取此常量。无论如何我可以给出这样的同义词吗?

例如,某些模块包含:

bindConstant().annotatedWith(Names.named("xxx")).to("testing");

我想写这样的东西:

bindConstant().annotatedWith(Names.named("yyy")).to(value of xxx);

最佳答案

如果你看ConstantBindingBuilderImpl.java您会看到它只是用于从原语推断绑定(bind)类型的语法糖。 Guice 不允许您将常量绑定(bind)到另一个绑定(bind),但它确实允许您将“正常”绑定(bind)绑定(bind)到另一个绑定(bind)。

bind(String.class).annotatedWith(Names.named("yyy"))
    .to(Key.get(String.class, Names.named("xxx")));

这看起来没有 bindConstant() 有用,因为您必须显式指定绑定(bind)类型,但实际情况是 bindConstant() 悄悄地这样做不管怎样,这都是在幕后为你准备的。 (顺便说一句,Guice 中的 String 元素有点神奇——如果您将注释绑定(bind)到 String,则可以 inject it as a variety of other primitive types 。这就是为什么 Names.bindProperties 可以注入(inject)各种类型,而不仅仅是字符串。)

关于java - Guice 如何将带注释的常量重新绑定(bind)到另一个名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14585640/

相关文章:

java - 如何以编程方式调整 JTable 列的大小,DefaultTableModel Java

java - 即使直接 SQL 查询有效,JPQL 也会抛出无法确定搜索的 case 语句的数据类型

java - 绑定(bind)到 Guice 提供程序实例时显式添加绑定(bind)器依赖项

dependency-injection - Mockito 和 Guice : mocking a @Provides method

java - 将值绑定(bind)到 Guice 中的两种可能性之一

java - 当继承跨不同的 JAR 时如何使用 @Entity 属性?

javascript - Thymeleaf Spring 中的 Google 图表。 JavaScript 循环

基于JSON数据的Java文件移动

scala - scala案例类中的Google Guice字段注入(inject)

java - Guice:使用属性绑定(bind)注解