建議處理程式屬性

有時,從通知中訪問處理器屬性很有用。例如,大多數處理器實現 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();
© . This site is unofficial and not affiliated with VMware.