eth*_*b_0 6 qualifiers java-ee cdi java-ee-6 jboss-weld
有没有办法创建一个拦截器限定符注释,忽略注释字符串值以进行限定?
例如:
Log.java
@Inherited
@InterceptorBinding
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {
String value() default ""; // <---- ignore this
}
Run Code Online (Sandbox Code Playgroud)
LogInterceptor.java
@Log
@Interceptor
public class LogInterceptor implements Serializable {
...
}
Run Code Online (Sandbox Code Playgroud)
Usage.java
@Log("message for this log")
public String interceptedMethod(String param) {
...
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为注释value("message for this log")作为限定符,但我想使用value()not作为限定符,但使用消息日志.
Adr*_*tev 12
您可以使用@Nonbinding注释来实现此目的.您可以通过注释成员@Nonbinding来强制容器忽略限定符类型的成员.请看以下示例:
@Qualifier
@Retention(RUNTIME)
@Target({METHOD, FIELD, PARAMETER, TYPE})
public @interface PayBy {
PaymentMethod value();
@Nonbinding String comment() default "";
}
Run Code Online (Sandbox Code Playgroud)
通过@PayBy限定符匹配bean时,将忽略注释.可在此处找到对描述此内容的CDI文档的引用.
| 归档时间: |
|
| 查看次数: |
2358 次 |
| 最近记录: |