2013-04-16 17 views
5

Kalifikasyon için ek açıklama dizesi değerini yoksayan bir önleyici niteleyici ek açıklaması oluşturmanın bir yolu var mı? örneğinEkleme değerini yok sayan önleyici niteleyici oluşturma()

:

Log.java

@Inherited 
@InterceptorBinding 
@Target({ElementType.METHOD, ElementType.TYPE}) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface Log { 
    String value() default ""; // <---- ignore this 
} 

LogInterceptor.java

@Log 
@Interceptor 
public class LogInterceptor implements Serializable { 

    ... 
} 

Usage.java

@Log("message for this log") 
public String interceptedMethod(String param) { 
    ... 
} 

Bu açıklama çalışmıyor çünkü ek açıklama value("message for this log") niteleyici olarak çalışıyor, ancak value() niteleyici olarak değil, mesaj günlüğünü kullanmak istiyorum.

cevap

9

Bu amaç için @NonBinding ek açıklamasını kullanabilirsiniz. Konteyneri @Nonbinding öğesine açıklama ekleyerek bir niteleyici türünün bir üyesini görmezden gelmeye zorlayabilirsiniz. Aşağıdaki örneğe bakın: @PayBy eleme tarafından fasulye eşleştiriliyorken İşte açıklama dikkate alınmayacaktır

@Qualifier 
@Retention(RUNTIME) 
@Target({METHOD, FIELD, PARAMETER, TYPE}) 
public @interface PayBy { 
    PaymentMethod value(); 
    @Nonbinding String comment() default ""; 
} 

. Bunu açıklayan CDI belgelerine bir başvuru here bulunabilir.

İlgili konular