2013-04-16 46 views
5

Có cách nào để tạo chú thích của trình chặn đánh chặn bỏ qua giá trị chuỗi chú thích cho vòng loại không?Tạo vòng loại đánh chặn mà bỏ qua giá trị chú thích()

ví dụ:

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) { 
    ... 
} 

Điều này không có tác dụng vì chú thích value("message for this log") hoạt động dưới dạng vòng loại nhưng tôi muốn sử dụng value() không làm vòng loại thư nhưng nhật ký thư.

Trả lời

9

Bạn có thể sử dụng chú thích @Nonbinding cho mục đích đó. Bạn có thể buộc vùng chứa bỏ qua một thành viên của một loại vòng loại bằng cách chú thích thành viên @Nonbinding. Hãy xem ví dụ sau:

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

Tại đây, nhận xét sẽ bị bỏ qua khi đối sánh hạt bằng vòng loại @PayBy. Tham chiếu đến tài liệu CDI mô tả điều này có thể được tìm thấy here.

Các vấn đề liên quan