建議的處理器屬性

有時,從 advice 內部存取處理器屬性會很有用。例如,大多數處理器實作 NamedComponent,讓您可以存取元件名稱。

目標物件可以透過 target 引數 (當子類別化 AbstractRequestHandlerAdvice 時) 或 invocation.getThis() (當實作 org.aopalliance.intercept.MethodInterceptor 時) 存取。

當整個處理器都被 advice (例如當處理器不產生回覆,或 advice 實作 HandleMessageAdvice 時),您可以將目標物件轉換為介面,例如 NamedComponent,如下列範例所示

String componentName = ((NamedComponent) target).getComponentName();

當您直接實作 MethodInterceptor 時,您可以如下轉換目標物件

String componentName = ((NamedComponent) invocation.getThis()).getComponentName();

當只有 handleRequestMessage() 方法被 advice (在產生回覆的處理器中) 時,您需要存取完整的處理器,即 AbstractReplyProducingMessageHandler。下列範例示範如何執行此操作

AbstractReplyProducingMessageHandler handler =
    ((AbstractReplyProducingMessageHandler.RequestHandler) target).getAdvisedHandler();

String componentName = handler.getComponentName();