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

前端之家收集整理的这篇文章主要介绍了java-ee – 创建忽略注释值的拦截器限定符()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法创建一个拦截器限定符注释,忽略注释字符串值以进行限定?

例如:

Log.java

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

LogInterceptor.java

  1. @Log
  2. @Interceptor
  3. public class LogInterceptor implements Serializable {
  4.  
  5. ...
  6. }

Usage.java

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

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

解决方法

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

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

猜你在找的Java相关文章