对于Spring-Integration 6.0.0
,我使用AbstractRequestHandlerAdvice
隐式记录对http:outbound-gateway
的调用(包括输出请求消息头和有效负载以及输入响应消息头和有效负载)。
但是我在从AbstractRequestHandlerAdvice
中检索http:outbound-gateway
bean本身的名称时遇到了一些困难。doInvoke()
方法接收一个包含http:outbound-gateway
bean名称的参数,不幸的是,该参数位于私有类中。
@Override
protected Object doInvoke(ExecutionCallback callback, Object target, Message<?> message) {
...
final String outboundGatewayName = ((AbstractReplyProducingMessageHandler.AdvisedRequestHandler) target).getAdvisedHandler().getBeanName();
...
}
target
参数是一个私有子类AbstractReplyProducingMessageHandler.AdvisedRequestHandler
,它包含方法getAdvisedHandler()
,该方法返回http:outbound-gateway
bean并允许使用getBeanName()
检索bean名称:但是,由于这个子类是private
,所以如果不进行一些特殊反射工作,我就无法执行此操作。
是否有一种非私有的方法可以从AbstractRequestHandlerAdvice
中检索目标bean的名称?我认为这对于日志记录非常重要。
1条答案
按热度按时间yyyllmsg1#
看起来这样就行了:使用公共接口RequestHandler: