の原因は、プロパティ ファイルに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
は と の両方を Spring フィールド/プロパティとして扱いdirect-db
ますsome-alternative-db
。これらは、最初は間違った名前の変数でさえあります。
最終的な有効な形式は次のとおりです。
<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'