java-ee – 创建忽略注释值的拦截器限定符()

有没有办法创建一个拦截器限定符注释,忽略注释字符串值以进行限定?

例如:

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

这不起作用,因为注释值(“此日志的消息”)作为限定符,但我想使用值()不作为限定符,而是使用消息日志.

解决方法

您可以使用@Nonbinding注释来实现此目的.您可以通过注释成员@Nonbinding来强制容器忽略限定符类型的成员.请看以下示例:
@Qualifier
@Retention(RUNTIME)
@Target({METHOD,FIELD,ParaMETER,TYPE})
public @interface PayBy {
   PaymentMethod value();
   @Nonbinding String comment() default "";
}

通过@PayBy限定符匹配bean时,将忽略注释.
可以在here找到对描述此内容的CDI文档的引用.

相关文章

应用场景 C端用户提交工单、工单创建完成之后、会发布一条工...
线程类,设置有一个公共资源 package cn.org.chris.concurre...
Java中的数字(带有0前缀和字符串)
在Java 9中使用JLink的目的是什么?
Java Stream API Filter(过滤器)
在Java中找到正数和负数数组元素的数量