96.5. 생산자의 표현식 매개변수 사용

Camel 2.16.1 이후부터는 메시지 본문에서 표기법과 같은 OGNL을 사용할 수 있으며 getLicense 및 getMinimum 방법이 있다고 가정합니다.

@NAME(projects)
  SELECT *
  FROM projects
  WHERE license = :${body.license} AND id > :${body.minimum}
  ORDER BY id

96.5.1. 소비자에서 표현식 매개변수 사용

Camel 2.23 사용

ElSql 구성 요소를 소비자로 사용하는 경우 이제 표현식 매개변수(간단 언어)를 사용하여 id, date 또는 something를 검색하기 위해 빈에서 메서드를 호출하는 것과 같은 동적 쿼리 매개 변수를 빌드할 수도 있습니다.

예를 들어 아래 샘플에서는 빈 myIdGenerator에서 nextId 메서드를 호출합니다.

@NAME(projectsByIdBean)
  SELECT *
  FROM projects
  WHERE id = :${bean#myIdGenerator.nextId}
중요

위의 빈 구문에서 간단한 표현식에서 : 대신 # 을 사용해야 합니다. Spring query 매개 변수 구문 분석기는 콜론에서 매개 변수를 분리하는 사용 중이기 때문입니다. 또한 Spring 쿼리 구문 분석기가 각 쿼리에 대해 빈을 두 번 호출한다는 점에 주의하십시오.

또한 빈에는 다음 메서드가 있습니다.

public static class MyIdGenerator {

    private int id = 1;

    public int nextId() {
        // spring will call this twice, one for initializing query and 2nd for actual value
        id++;
        return id / 2;
    }

메시지 본문 및 헤더가 있는 기존 Exchange 는 없으므로 소비자에서 사용할 수 있는 간단한 표현식은 이 예제와 같이 빈 메서드를 호출하는 데 가장 많이 사용할 수 있습니다.