динамический заголовок с интегрированной пружиной

В Spring-интеграции Http-запрос на основе пользователя, вошедшего в систему, хочет добавить динамический заголовок param.say, например, если пользователь «A» вошел в систему и попал в HTTP-запрос, теперь необходимо добавить динамический 1 дополнительный заголовок, для других пользователей он должен даже ключ тоже (т.е. значение равно null)

Для пользователя

<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>

person Doss    schedule 20.03.2018    source источник


Ответы (1)


Я предполагаю, что история действительно об этом X-Srcvalue. И поскольку вы говорите, что null можно использовать для всех остальных, лучше использовать expression вместо значения.

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

В выражении можно использовать любой бин в контексте приложения для выполнения логики любой сложности.

person Artem Bilan    schedule 20.03.2018
comment
моя проблема, если другой пользователь вошел в систему, под заголовком сам ключ X-Srcvalue не должен присутствовать. Для пользователя это не prblm. - person Doss; 21.03.2018
comment
Ну, дело в том, что если значение этого заголовка для сопоставления равно null, оно не будет представлено в выходном сообщении. См. MessageHeaderAccessor.setHeader() реализацию - person Artem Bilan; 21.03.2018