【问题标题】:spring integration dynamic headerspring 集成动态标头
【发布时间】:2018-03-20 08:05:31
【问题描述】:

在基于用户登录的Spring-integration Http请求中要添加动态标头参数。例如,如果“A”用户登录并点击Http请求,现在需要添加动态1个附加标头,对于其他用户,应该甚至键也是(即值为空)

对于一个用户

<int:gateway id="requestGateway" service-interface="net.group.gateway.Gateway"  default-request-channel="jsonTransformationChannel">
            <int:default-header name="X-MW-LOGGEDID" expression="@requestData.getLoggedID()" />
            <int:default-header name="X-Srcvalue" value="56789" />
            <int:default-header name="content-type" value="application/json" />
            <int:default-header name="Accept" value="application/json" />
</int:gateway>

其他用户

<int:gateway id="requestGateway" service-interface="net.group.gateway.Gateway"  default-request-channel="jsonTransformationChannel">
            <int:default-header name="X-MW-LOGGEDID" expression="@requestData.getLoggedID()" />
            <int:default-header name="content-type" value="application/json" />
            <int:default-header name="Accept" value="application/json" />
 </int:gateway>

【问题讨论】:

    标签: java spring-integration spring-integration-http


    【解决方案1】:

    我猜这个故事真的是关于X-Srcvalue。既然您说其他任何人都可以使用null,那最好使用expression 而不是值。

    <int:default-header name="X-Srcvalue" expression="USER == A ? 56789 : null" />
    

    在表达式中,您可以使用应用程序上下文中的任何 bean 来执行任何复杂性的逻辑。

    【讨论】:

    • 我的问题,如果其他用户登录,在标题下的键本身“X-Srcvalue”不应该存在。因为用户不是prblm。
    • 好吧,关键是如果要映射的标头的值为null,它就不会出现在输出消息中。见MessageHeaderAccessor.setHeader()实现
    猜你喜欢
    • 1970-01-01
    • 2021-09-20
    • 2015-04-10
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    相关资源
    最近更新 更多