建议的处理程序属性
有时,从建议中访问处理程序属性很有用。例如,大多数处理程序实现 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();