31장. SpEL
31.1. 개요
Spring Expression Language (SpEL) 는 Spring 3과 함께 제공되는 오브젝트 그래프 탐색 언어이며, 경로에 서술자 및 표현식을 구성하는 데 사용할 수 있습니다. SpEL의 주목할 만한 기능은 레지스트리에서 빈에 쉽게 액세스할 수 있는 기능입니다.
31.2. 구문
SpEL 표현식은 일반 텍스트 문자열에 포함될 수 있도록 자리 표시자 구문 #{SpelExpression}
을 사용해야 합니다(즉, SpEL에는 표현식 템플릿 표시가 활성화되어 있습니다).
SPEL은 @ CryostatID 구문을 사용하여 레지스트리에서 빈
을 검색할 수도 있습니다(일반적으로 Spring 레지스트리). 예를 들어 ID, headerUtils
, 메서드, count()
(현재 메시지의 헤더 수를 계산하는) count()가 있는 8080이 있는 경우 다음과 같이 SpEL 서술자에서 headerUtils
Cryostat를 사용할 수 있습니다.
#{@headerUtils.count > 4}
31.3. SpEL 패키지 추가
경로에서 SpEL을 사용하려면 예 31.1. “camel-spring 종속성 추가” 과 같이 카멜 자에 대한 종속성
을 프로젝트에 추가해야 합니다.
예 31.1. camel-spring 종속성 추가
<!-- Maven POM File --> <properties> <camel-version>2.23.2.fuse-7_13_0-00013-redhat-00001</camel-version> ... </properties> <dependencies> ... <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-spring</artifactId> <version>${camel-version}</version> </dependency> ... </dependencies>
31.4. 변수
표 31.1. “SPEL 변수” SpEL을 사용할 때 액세스할 수 있는 변수를 나열합니다.
Variable | 유형 | 설명 |
---|---|---|
|
| 현재 교환은 루트 오브젝트입니다. |
|
| 현재 교환입니다. |
|
| 현재 교환의 ID입니다. |
|
| 교환 예외(있는 경우)입니다. |
|
| 오류 메시지(있는 경우). |
|
| 교환의 메시지입니다. |
|
| 교환의 아웃 메시지(있는 경우)입니다. |
|
| 교환 속성입니다. |
|
| 이름으로 키가 지정된 교환 속성입니다. |
|
| 이름으로 키 지정된 교환 속성의 유형으로 변환됩니다. Type. |
31.5. XML 예
예를 들어, 헤더의 값이 USA
인
메시지만 선택하려면 다음 SpEL 표현식을 사용할 수 있습니다.
<route> <from uri="SourceURL"/> <filter> <spel>#{request.headers['Country'] == 'USA'}}</spel> <to uri="TargetURL"/> </filter> </route>
31.6. Java 예
다음과 같이 Java DSL에서 동일한 경로를 정의할 수 있습니다.
from("SourceURL") .filter().spel("#{request.headers['Country'] == 'USA'}") .to("TargetURL");
다음 예제에서는 일반 텍스트 문자열에 SpEL 표현식을 포함하는 방법을 보여줍니다.
from("SourceURL") .setBody(spel("Hello #{request.body}! What a beautiful #{request.headers['dayOrNight']}")) .to("TargetURL");