这是如何使用 SpEL 在 Spring 集成路由器中读取有效负载和标头内容的扩展问题
我项目中的技术
Spring Boot 2
Spring Integration (XML style)
Java 8
Tomcat 9.x/Liberty 19.0.0.1
作为我的 Spring 集成项目的一部分(带有入站 http 网关的 REST API,它接受 XML 输入并产生 XML 输出),这是我的问题的设置:
- 有一个基于 Builder 模式的 Java 对象(例如
MyPOJO
),它是流中的有效负载。 MyPOJO
有一个字符串属性/实例变量(比如,String response
)以及一个 getter 和 setter。- 在流程中的某个地方,
MyPOJO
构建并response
设置。 - 在里面
response
,有一个关键字/特定的文本将决定流程的进一步进程。
这就是说,是否可以编写一个路由器(使用 XML 配置)来检查response
内部是否Message<MyPOJO>
包含该关键字/特定的文本片段以确定下一步要去哪里?
举例来说,像这样:
<int:router input-channel="inputChannel" expression="payload.getResponse().contains("keyword")">
<int:mapping value="true" channel="oneRoute"/>
<int:mapping value="false" channel="anotherRoute"/>
</int:router>
当我这样做并启动应用程序时,错误是:
nested exception is org.xml.sax.SAXParseException; lineNumber: 44; columnNumber: 98; Element type "int:router" must be followed by either attribute specifications, ">" or "/>"
具体来说,该expression="payload.getResponse().contains("keyword")"
部分似乎有一个问题得到解决,这可能与周围的引号有关keyword
非常感谢您对此的任何帮助。
真诚的,巴拉特