被增強的處理器屬性
有時,從 advice 中訪問處理器屬性會很有用。例如,大多數處理器實現了 NamedComponent
介面,讓您可以訪問元件名稱。
可以透過 target
引數(當繼承 AbstractRequestHandlerAdvice
時)或 invocation.getThis()
(當實現 org.aopalliance.intercept.MethodInterceptor
時)訪問目標物件。
當整個處理器被增強時(例如當處理器不產生回覆或 advice 實現了 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();