263.27. 사용자 정의 함수 사용
Camel 2.14.1로 사용 가능
속성 구성 요소를 사용하면 속성 자리 표시자의 구문 분석 중에 사용할 수 있는 타사 함수를 사용할 수 있습니다.The Properties component allow to plugin 3rd party functions that can be used during parsing of the property placeholders. 그런 다음 이러한 함수는 사용자 지정 논리를 수행하여 데이터베이스 검색, 사용자 지정 계산 또는 whatnot와 같은 자리 표시자를 확인할 수 있습니다. 함수 이름은 자리 표시자에 사용되는 접두사가 됩니다. 이는 아래 예제 코드에 가장 잘 설명되어 있습니다.
<bean id="beerFunction" class="MyBeerFunction"/>
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<propertyPlaceholder id="properties">
<propertiesFunction ref="beerFunction"/>
</propertyPlaceholder>
<route>
<from uri="direct:start"/>
<to uri="{`{beer:FOO}`}"/>
<to uri="{`{beer:BAR}`}"/>
</route>
</camelContext>come l 2.19.0 에서 위치 특성( propertyPlaceholder 태그에 있음)이 더 이상 필요하지 않습니다.
여기서는 사용자 지정 함수를 사용하도록 < propertyPlaceholder >를 정의해 빈 ID라고 하는 Camel XML 경로 - 즉 beerFunction 과 같은 Camel XML 경로가 있습니다. 맥주 함수는 이름으로 "beer" 를 사용하므로 자리 표시자 구문은 beer:value 로 시작하여er 함수를 트리거할 수 있습니다.
함수 구현은 다음과 같이 두 가지 방법 중 하나일 뿐입니다.
public static final class MyBeerFunction implements PropertiesFunction {
@Override
public String getName() {
return "beer";
}
@Override
public String apply(String remainder) {
return "mock:" + remainder.toLowerCase();
}
}
이 함수는 org.apache.camel.component.properties.PropertiesFunction 인터페이스를 구현해야 합니다. getName 메서드는 함수 이름, eg beer입니다. 그리고 apply 메서드는 수행할 사용자 지정 논리를 구현하는 곳입니다. 샘플 코드는 단위 테스트에서 가져온 것처럼 mock 엔드포인트를 참조하는 값만 반환합니다.
Java 코드에서 사용자 정의 함수를 등록하려면 다음과 같습니다.
PropertiesComponent pc = context.getComponent("properties", PropertiesComponent.class);
pc.addFunction(new MyBeerFunction());