It's not an issue of Spring Integration. It is general SpEL restriction. It is difficult to find it, but I digged it from debug:
private boolean maybeEatConstructorReference() {
if (peekIdentifierToken("new")) {
...
and the code of that method:
private boolean peekIdentifierToken(String identifierString) {
if (!moreTokens()) {
return false;
}
Token t = peekToken();
return t.kind==TokenKind.IDENTIFIER && t.stringValue().equalsIgnoreCase(identifierString);
}
As you see equalsIgnoreCase
does the stuff here.
Not sure that it is appropriate to mark it as a bug for SpEL, but anyway it is restriction and you should use different identifier. Or try this syntax:
select name from emp where status=:headers.NEW
The bean property accessor
, not map.
Restricted tokens:
- and
- or
- new
- true
- false