6

修飾用のアノテーション文字列値を無視するインターセプター修飾子アノテーションを作成する方法はありますか?

例えば:

ログ.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 {

    ...
}

使用法.java

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

注釈が修飾子として機能するため、これは機能しませんが、修飾子としてではなくメッセージ ログvalue("message for this log")を使用したいのです。value()

4

1 に答える 1

12

そのために @Nonbinding アノテーションを使用できます。メンバー @Nonbinding に注釈を付けることで、コンテナーが修飾子型のメンバーを無視するように強制できます。次の例を見てください。

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

ここでは、@PayBy 修飾子によって Bean を照合するときにコメントは無視されます。これについて説明している CDI ドキュメントへの参照は、ここにあります。

于 2013-04-17T09:45:07.570 に答える