Причина 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'
person
Julius Delfino
schedule
16.09.2016