的原因Unexpected token. Expected 'colon(:)' but was 'lcurly({)'
是属性文件中不route1.db
存在属性,因此表达式被评估为headers['DATA'].routingKey == 'ROUTE1' ? ${route1.db} : some-alternative-db
,保持${route1.db}
不变。这会导致语法错误。
此外,@Hassen 建议使用将属性文件中的值呈现为正确字符串所需的单引号。没有它,评估的表达式headers['DATA'].routingKey == 'ROUTE1' ? direct-db : some-alternative-db
将把direct-db
和都some-alternative-db
视为 Spring 字段/属性,这些字段/属性甚至是错误命名的变量。
最终的有效表格应该是:
<int:header name="DESTINATION" expression="headers['DATA'].routingKey == 'ROUTE1' ? '${route1.db}' : '${route2.db}'"/>
并假设属性文件包含以下内容:
route1.db=direct-db
route2.db=some-alternative-db
评估的表达式将是:
headers['DATA'].routingKey == 'ROUTE1' ? 'direct-db' : 'some-alternative-db'