在Spring Integration Java DSL中使用WSInboundGateway时,有没有办法提取标题(其值)并使用它来填充枚举?
我试过了,但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();
}
答案 0 :(得分:2)
您的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']")
尝试从春天开始没有意义整合视角。