我项目中的技术
Spring Boot 2
Spring Integration (XML style)
Java 8
Tomcat 9.x/Liberty 19.0.0.1
作为我的Spring Integration项目的一部分(带有入站-http-gateway的REST API,它接受XML输入并生成XML输出),我正在编写以下组件:
POJO类的草稿(实际上,POJO将具有更多属性,但对于我们的示例,保持简短):
public class Composite {
private Boolean isError;
private Composite(CompositeBuilder compositeBuilder) {
this.isError = miCompositeBuilder.isError;
}
public boolean isError() {
return isError;
}
//Builder
public static class CompositeBuilder {
private Boolean isError;
public CompositeBuilder(Boolean isError) {
this.isError = isError;
}
public Composite build() {
return new Composite(this);
}
}
}
XML中的验证器服务激活器组件:
<!-- SERVICE ACTIVATOR FOR REQUEST VALIDATION -->
<int:service-activator ref="myService"
method="validateMYRequest"
input-channel="myGatewayRequests"
output-channel="compositesPostRequestValidation" />
XML中的路由器组件:
<!-- ROUTER POST-REQUEST VALIDATION -->
<int:router input-channel="compositesPostRequestValidation" expression="payload.isError">
<int:mapping value="true" channel="upstreamResponses"/>
<int:mapping value="false" channel="downstreamValidatedRequests"/>
</int:router>
最后在我的问题中,在这个“路由器”中,
你能告诉我如何访问Composite POJO中的布尔“isError”属性吗?这假设发送到路由器的消息是消息
看起来有效载荷是qazxsw poi而不是qazxsw poi。
无论如何,SpEL使用JavaBean约定;所以MIComposite
是一个布尔属性Composite
的吸气剂。所以isError()
应该工作(只要error
暴露它)。或者你可以使用payload.error
。
如果它在标题中,则表达式为MIComposite
。