您好我目前正在使用Spring Integration 4.0.3。我需要记录进入Http入站网关的实际请求。请求将在Http Inbound Messaging转换为消息之前进行记录网关并发送到网关请求通道。这就是我试图实现这一目标的方法。
但似乎每当我在handleRequest方法上应用aop时,调度程序servlet都无法找到我所有http入站网关使用的任何url映射的处理程序。
我知道通过在web.xml中配置过滤器可以实现同样的目的,但我只是好奇为什么会发生这种情况....请帮助......
答案 0 :(得分:1)
实际上,您无法代理HttpRequestHandlingMessagingGateway#handleRequest
,因为它是final
。
从另一方面来说,没有理由为日志记录工作做那么复杂的AOP工作。
HttpRequestHandlingMessagingGateway
将RequestContextHolder.currentRequestAttributes()
填充为EvaluatationContext
变量,因此您可以将其放入MessageHeader
并在下游流程中的任何位置使用:
<int-http:inbound-gateway path="/foo" request-channel="requestChannel">
<int-http:header name="requestAttributes" expression="#requestAttributes"/>
</int-http:inbound-gateway>
<publish-subscribe-channel id="requestChannel"/>
<logging-channel-adapter channel="requestChannel"
expression="headers.requestAttributes.request"/>