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_10_0-00018-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을 사용할 때 액세스할 수 있는 변수를 나열합니다.

표 31.1. SPEL 변수
Variable유형설명

교환

현재 교환은 루트 오브젝트입니다.

exchange

교환

현재 교환입니다.

exchangeId

문자열

현재 교환의 ID입니다.

예외

Throwable

교환 예외(있는 경우)입니다.

fault

메시지

오류 메시지(있는 경우).

request

메시지

교환의 메시지입니다.

응답

메시지

교환의 아웃 메시지(있는 경우)입니다.

속성

map

교환 속성입니다.

속성(이름)

개체

이름으로 키가 지정된 교환 속성입니다.

속성(이름,유형)

유형

이름으로 키 지정된 교환 속성의 유형으로 변환됩니다. 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");
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.