Tôi có một chú thích:Làm thế nào để xử lý các thuộc tính trong ràng buộc chặn
@Inherited
@InterceptorBinding
@Retention(RUNTIME)
@Target({METHOD, TYPE})
public @interface Example {
}
Và một lớp đánh chặn để xử lý của nó:
@Interceptor
@Example
public class ExampleInterceptor implements Serializable {
...
}
Tôi muốn thêm một văn bản thông số:
public @interface Example {
String text();
}
Nhưng tôi không biết cách xử lý tham số trong lớp ngăn chặn. Làm thế nào để sửa đổi chú thích của lớp?
@Interceptor
@Example(text=???????)
public class ExampleInterceptor implements Serializable {
...
}
Nếu tôi viết @Example(text="my text")
, đánh chặn được gọi là chỉ khi một phương pháp/lớp được chú thích với @Example(text="my text")
. Nhưng tôi muốn máy đánh chặn được gọi là độc lập trên giá trị tham số - @Example(text="other text")
.
Và cách nhận giá trị tham số? Tôi có phải sử dụng phản xạ hoặc có cách nào tốt hơn không?
Để nhận được giá trị của chú thích trên phương pháp chặn trong bộ chặn: Gọi lệnhContext ctx; Ví dụ mẫu = ctx.getMethod(). GetAnnotation (Example.class); Giá trị chuỗi = example.value(); – dbricman
Điều gì sẽ xảy ra nếu tôi không muốn thêm phương thức mặc định để buộc tất cả các sử dụng chú thích phải chỉ định giá trị? Trong trường hợp của tôi, nó là một giá trị enum thay vì một chuỗi, do đó, nó có ý nghĩa nhỏ để đặt @Example (MyEnum.SPECIFIC_VALUE) vào lớp ngăn chặn. – Mano