304장. 간단한 언어
Camel 버전 1.1에서 사용 가능
Simple Expression Language는 작성되었을 때 매우 간단한 언어 였지만 그 이후로 더 강력해졌습니다. 일반적으로 Expressions 및 Predicates에 대한 새로운 종속성이나 지식이 없어도 식 및 Predicates를 위한 매 우 작고 간단한 언어이므로 camel-core에서 테스트하는 데 이상적입니다. 이 아이디어는 Camel 경로에 약간의 표현식 기반 스크립트가 필요할 때 일반적인 사용 사례의 95%를 다루는 것이었습니다.
그러나 훨씬 더 복잡한 사용 사례의 경우 일반적으로 다음과 같은 보다 표현되고 강력한 언어를 선택하는 것이 좋습니다.
- SpEL
- MVEL
- groovy
- JavaScript
- OGNL
- 지원되는 스크립트 언어 중 하나입니다.
간단한 언어는 식에 상수 리터럴이 포함된 복잡한 식에 ${body
} 자리 표시자를 사용합니다.The simple language uses ${body } placeholders for complex expressions where the expression contains constant literals. 표현식이 토큰 자체인 경우 $\{ } 자리 표시자를 생략할 수 있습니다.
Camel 2.5 이후의 대체 구문 에서는 $simple{ }
을 자리 표시자로 사용하는 대체 구문을 사용할 수도 있습니다. 이는 Camel과 함께 Spring 속성 자리 표시자를 사용할 때 충돌을 피하기 위해 경우에 사용할 수 있습니다.
304.1. Camel 2.9의 간단한 언어 변경 사항
Camel 2.9의 간단 한 언어는 보다 나은 구문 파서를 사용하도록 개선되어 정확한 오류 메시지를 작성할 수 있으므로 무엇이 잘못되었으며 문제가 어디에 있는지 정확히 알 수 있습니다. 예를 들어 연산자 중 하나에서 오타를 만든 경우 이전에 구문 분석기가 이를 탐지할 수 없어 평가가 true가 됩니다. 구문에 더 이상 이전 버전과 호환되지 않는 몇 가지 변경 사항이 있습니다. 표시로 단순 언어를 사용하는 경우 리터럴 텍스트를 작은따옴표 또는 큰따옴표로 묶어야 합니다. 예: "${body} == 'Camel'
. 리터럴에 작은따옴표가 있는지 확인합니다. 메시지 본문을 나타내는 "body"
및 "header.foo"
를 사용하는 이전 스타일은 @decated이며 기본 제공 함수에 대해 항상 $\{ } 토큰을 사용하는 것이 좋습니다. 이제 범위 연산자에 범위가 단일 인용문 과 '30000..39999' 사이의 "${header.zip}"이 필요합니다
.
메시지의 본문을 가져오려면 "body"
또는 "in.body"
또는 "${body}"
입니다.
복잡한 표현식은 $\{ } 자리 표시자를 사용해야 합니다(예: "Hello ${in.header.name})
.
동일한 식에 여러 함수를 사용할 수 있습니다. "Hello ${in.header.name} This is ${in.header.me} say"
.
그러나 Camel 2.8.x 또는 이전 버전에서는 기능을 중첩할 수 없습니다 (즉, 기존에 다른 $\{ } 자리 표시자를 갖는 것은 허용되지 않습니다).
Camel 2.9 이후부터는 기능을 중첩할 수 있습니다.