Guice注入注释值

时间:2018-02-27 14:24:25

标签: java dependency-injection guice

您好我想将注释值注入参数。例如

@BindingAnnotation
@Target({ ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    int value() default 0;
}

public class A {
    @Inject @MyAnnotation(30)
    protected Integer a;
}

我如何在a变量中注入30。

非常感谢

1 个答案:

答案 0 :(得分:2)

使用bindConstant()作为

bindConstant().annotatedWith(MyAnnotation.class).to(30);

您可以在整数字段上注释@Inject and @MyAnnotation

注意: 如果您的MyAnnotation注释中还有一个元素如stringValue()所示,

@BindingAnnotation
@Target({ ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    int value() default 0;
    String stringValue default "";
}

为该元素bindConstant().annotatedWith(MyAnnotation.class).to("someValue")添加一个绑定似乎适用于以下情况,但我觉得这不是正确的方法。

public class A {
    @Inject
    public A(@MyAnnotation Integer integer, @MyAnnotation String string) {
      //Here integer will be 10 and string will be someValue
    }
}