推奨されるハンドラープロパティ
アドバイス内からハンドラープロパティにアクセスすると便利な場合があります。例: ほとんどのハンドラーは NamedComponent
を実装して、コンポーネント名にアクセスできるようにします。
ターゲットオブジェクトには、target
引数(AbstractRequestHandlerAdvice
をサブクラス化する場合)または invocation.getThis()
(org.aopalliance.intercept.MethodInterceptor
を実装する場合)を介してアクセスできます。
ハンドラー全体がアドバイスされる場合(ハンドラーが応答を生成しない場合やアドバイスが HandleMessageAdvice
を実装する場合など)、次の例に示すように、ターゲットオブジェクトを NamedComponent
などのインターフェースにキャストできます。
String componentName = ((NamedComponent) target).getComponentName();
MethodInterceptor
を直接実装する場合、次のようにターゲットオブジェクトをキャストできます。
String componentName = ((NamedComponent) invocation.getThis()).getComponentName();
handleRequestMessage()
メソッドのみが推奨される場合(応答生成ハンドラーで)、ハンドラー全体(AbstractReplyProducingMessageHandler
)にアクセスする必要があります。次の例は、その方法を示しています。
AbstractReplyProducingMessageHandler handler =
((AbstractReplyProducingMessageHandler.RequestHandler) target).getAdvisedHandler();
String componentName = handler.getComponentName();