1
パラメータ化されたロギングインターセプタをJava EE 7アプリケーションに追加しようとすると、奇妙な問題が発生します。Java EE:複数の値を持つアノテーションを使用してインターセプタをバインドしようとしています
@Interceptorsアノテーションを使用してクラスインターセプタからカスタムインターセプタバインディングを作成しました。私はこのようになります...
注釈
@Inherited
@InterceptorBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({
ElementType.TYPE,
ElementType.METHOD
})
public @interface LogMethodCall {
MethodLogger logLevel() default MethodLogger.INFO;
}
迎撃
@Slf4j
@LogMethodCall
@Interceptor
@Priority(Interceptor.Priority.APPLICATION)
public class ActionInterceptor {
@AroundInvoke
protected Object protocolInvocation(final InvocationContext ic) throws Exception {
log.info(
"{}: <{}> called. Parameters={}",
ic.getTarget().getClass().getName(),
ic.getMethod().getName(),
ic.getParameters());
return ic.proceed();
}
}
使い方
@GET
@Path("/{account}")
@LogMethodCall
public void inboxes(@Suspended AsyncResponse response, @PathParam("account") String account) {
...
}
このすべてがOK作品のように、私はそれを使用していません。
購入私は、ログレベルを変更して、私のインターセプターが呼ばれることは決してありません
@LogMethodCall(logLevel=MethodLogger.DEBUG)
を使用使用してみてください。
私はここで何が欠けていますか?なぜアノテーションの値を設定するとコードが壊れますか?