【问题标题】:Create interceptor qualifier thats ignore annotation value()创建忽略注释值()的拦截器限定符
【发布时间】:2013-04-09 10:48:15
【问题描述】:

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

例如:

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

这不起作用,因为注释 value("message for this log") 用作限定符,但我想使用 value() 不是限定符,而是消息日志。

【问题讨论】:

    标签: jakarta-ee java-ee-6 cdi jboss-weld qualifiers


    【解决方案1】:

    您可以为此目的使用@Nonbinding 注解。您可以通过注释成员@Nonbinding 强制容器忽略限定符类型的成员。看下面的例子:

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

    这里的注释将在 @PayBy 限定符匹配 bean 时被忽略。 可以在here 找到对描述此内容的 CDI 文档的参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多