gpt4 book ai didi

java - Spring Integration Java DSL - 捕获在 Enum.valueof() 中使用的 header

转载 作者:行者123 更新时间:2023-11-30 03:16:24 24 4
gpt4 key购买 nike

在 Spring Integration Java DSL 中使用 WSInboundGateway 时,有没有办法提取 header (其值)并使用它来填充 Enum?

我已经尝试过此操作,但 SpEL 未评估:

@Bean
public IntegrationFlow aFlow() {
return IntegrationFlows.from(aWSInboundGateway())
.transform(
new GenericTransformer<JAXBElement<SomeStruct>, SpecificEvent>() {
@Override
public SpecificEvent transform(JAXBElement<SomeStruct> payload) {
return new SpecificEvent(
payload.getValue(),
Source.valueOf("headers['source']")
);
}
})
.channel(someChannel())
.get();
}

最佳答案

你的GenericTransformer impl必须是这样的:

new GenericTransformer<Message<JAXBElement<SomeStruct>>, SpecificEvent>() {
@Override
public SpecificEvent transform(Message<JAXBElement<SomeStruct>> message) {
return new SpecificEvent(
message.getPayload().getValue(),
Source.valueOf(message.getHeaders().get("source", String.class))
);
}
}

从另一方面你应该阅读 Spring Integration Manual进一步了解 SpEL 在运行时的工作原理,并认识到您的 Source.valueOf("headers['source']") 尝试从 Spring Integration 的角度来看没有意义。

关于java - Spring Integration Java DSL - 捕获在 Enum.valueof() 中使用的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32460266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com