建議的處理器屬性
有時,從 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();