如需使用最新稳定版本,请使用 Spring Integration 7.0.4spring-doc.cadn.net.cn

建议处理器属性

有时,从通知内部访问处理器属性非常有用。 例如,大多数处理器实现了 NamedComponent,以便您能够访问组件名称。spring-doc.cadn.net.cn

目标对象可以通过 target 参数(当子类化 AbstractRequestHandlerAdvice 时)或 invocation.getThis()(当实现 org.aopalliance.intercept.MethodInterceptor 时)进行访问。spring-doc.cadn.net.cn

当整个处理器被通知时(例如,当处理器不生成回复或通知实现了 HandleMessageAdvice),您可以将目标对象转换为接口,例如 NamedComponent,如下示例所示:spring-doc.cadn.net.cn

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

当您直接实现 MethodInterceptor 时,可以按如下方式将目标对象进行类型转换:spring-doc.cadn.net.cn

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

当仅对 handleRequestMessage() 方法提供建议(在产生回复的处理程序中)时,您需要访问完整的处理程序,它是一个 AbstractReplyProducingMessageHandler。 以下示例展示了如何实现这一点:spring-doc.cadn.net.cn

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

String componentName = handler.getComponentName();