如何使用java cdi的注入点读取非绑定属性

时间:2014-01-22 22:00:10

标签: java cdi jboss-weld

如果我有一个InjectPoint类实例,我该如何从中读取注释的属性。即:使用限定符@MyCar(mpg="23")

进行注释

如果我注射"23"injectionPoint,我将如何获得mpg和MyCar

@Inject
public void injectionTest(@MyCar(mpg="23") Car _car,InjectionPoint ip)
{
...
}


@Qualifier
@Retention(RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
public @interface MyCar
{
    @Nonbinding
    String mpg() default "30";
}

2 个答案:

答案 0 :(得分:3)

for(Annotation a : injectionPoint.getQualifiers())
{
   if(a instanseof MyCar)
   {
     MyCar myCar = (MyCar) a;
     a.mpg();
   }
}

答案 1 :(得分:1)

您可以使用getAnnotated方法避免迭代注释。您也可以通过这种方式访问​​其他注释,而不仅仅是限定符。

MyCar myCar = ip.getAnnotated().getAnnotation(MyCar.class);
System.out.println(myCar.mpg());