318.2. Camel 스키마 추가
Camel 1.x의 경우 다음 네임스페이스를 사용해야 합니다.
http://activemq.apache.org/camel/schema/spring
http://activemq.apache.org/camel/schema/spring
다음과 같은 스키마 위치입니다.
http://activemq.apache.org/camel/schema/spring/camel-spring.xsd
http://activemq.apache.org/camel/schema/spring/camel-spring.xsd
schemaLocation
선언에 Camel을 추가해야 합니다.
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
XML 파일은 다음과 같습니다.
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
318.2.1. camel 사용: namespace 링크 복사링크가 클립보드에 복사되었습니다!
또는 XML 선언에서 camel XSD를 참조할 수 있습니다.
xmlns:camel="http://camel.apache.org/schema/spring"
xmlns:camel="http://camel.apache.org/schema/spring"
- 따라서 선언은 다음과 같습니다.
- 그리고 camel: namespace 접두사를 사용하여 인라인 네임스페이스 선언을 생략할 수 있습니다.
<camel:camelContext id="camel5"> <camel:package>org.apache.camel.spring.example</camel:package> </camel:camelContext>
<camel:camelContext id="camel5">
<camel:package>org.apache.camel.spring.example</camel:package>
</camel:camelContext>
318.2.2. Spring을 사용한 고급 구성 링크 복사링크가 클립보드에 복사되었습니다!
Spring을 사용한 CamelContext의 고급 구성에서자세한 내용을 참조하십시오.
# Java Code 사용
Java 코드를 사용하여 RouteBuilder 구현을 정의할 수 있습니다. 이들은 봄에 빈으로 정의 한 다음 카멜 컨텍스트 (예:)에서 참조 할 수 있습니다.
318.2.3. 사용 링크 복사링크가 클립보드에 복사되었습니다!
Camel은 지정된 패키지에서 자동으로 경로를 검색하고 초기화할 수 있는 강력한 기능도 제공합니다. 이는 Spring 컨텍스트 정의에서 카멜 컨텍스트 정의에 태그를 추가하여 RouteBuilder 구현을 재귀적으로 검색할 패키지를 지정하여 구성됩니다. 1.X에서 이 기능을 사용하려면 검색해야 하는 쉼표로 구분된 패키지 목록을 지정하는 <package></package> 태그가 필요합니다.
<camelContext xmlns="http://camel.apache.org/schema/spring"> <package>org.apache.camel.spring.config.scan.route</package> </camelContext>
<camelContext xmlns="http://camel.apache.org/schema/spring">
<package>org.apache.camel.spring.config.scan.route</package>
</camelContext>
WARNING: 패키지 이름을 org.apache.camel
또는 이 패키지의 하위 패키지로 지정할 때는 주의해야 합니다. 이로 인해 Camel에서 해당 경로에 대한 자체 패키지를 검색하여 문제가 발생할 수 있습니다.
INFO:*이 이미 인스턴스화된 클래스*를 무시합니다. <package> 및 <packageScan>은 Spring에 의해 이미 생성된 클래스를 건너뜁니다. 따라서 경로 빌더를 Spring 8080 태그로 정의하면 해당 클래스를 건너뜁니다. < routeBuilder ref="theBeanId"/
> 또는 < contextScan
> 기능을 사용하는 빈을 포함할 수 있습니다.
318.2.4. 사용 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.0에서는 경로 일치와 같은 Cryostat를 사용하여 검색된 경로 클래스를 선택적으로 포함 및 제외할 수 있도록 확장되었습니다. Spring에서는 <packageScan/> 태그를 추가하여 지정됩니다. 태그는 하나 이상의 '패키지' 요소(예: 1.x와 유사)를 포함해야 하며 선택적으로 검색된 클래스의 정규화된 이름에 적용할 패턴을 지정하는 하나 이상의 'includes' 또는 'excludes' 요소가 포함되어야 합니다.
포함 패턴 전에 제외 패턴이 적용됩니다. 포함 또는 제외 패턴이 정의되지 않은 경우 패키지에서 발견된 모든 경로 클래스가 반환됩니다.
위의 예에서 camel은 모든 'org.example.routes' 패키지 및 RouteBuilder 클래스의 하위 패키지를 검사합니다. 검사에서 org.example.routes에서 'MyRoute'라는 두 개의 RouteBuilders를 찾고 하위 패키지 'excludedRoute'에서 또 다른 'MyExcludedRoute'를 찾습니다. 각 클래스의 정규화된 이름은 (org.example.routes.MyRoute, org.example.routes.excluded.MyExcludedRoute) 및 include 및 exclude 패턴이 적용됩니다.
제외 패턴 *.*Excluded 는 fqcn 'org.example.routes.excluded.MyExcludedRoute' 및 veto camel from initializing과 일치합니다.
본 문서에서는 다음과 같은 Spring의 Cryo statPatternMatcher 구현을 사용하고 있습니다.
? matches one character * matches zero or more characters ** matches zero or more segments of a fully qualified name
? matches one character
* matches zero or more characters
** matches zero or more segments of a fully qualified name
예를 들면 다음과 같습니다.
*.* excluded는 org.simple.Excluded, org.apache.camel.SomeExcludedRoute 또는 org.example.RouteWhichIsExcludeded와 일치합니다.
*.?? 제외됨 org.simple.IncludedRoute, org.simple.ExcludedRoute와 일치하지만 org.simple.PrecludedRoute와 일치하지 않습니다.
318.2.5. contextScan 사용 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.4부터 사용 가능
Camel에서 컨테이너 컨텍스트(예: 라우팅 빌더 인스턴스에 대한 Spring ApplicationContext
)를 스캔하도록 허용할 수 있습니다. 이를 통해 Spring < component-scan
> 기능을 사용할 수 있으며 Camel에서 스캔 프로세스에서 Spring에 의해 생성된 RouteBuilder 인스턴스를 선택할 수 있습니다.
이를 통해 Spring @Component
를 사용하여 경로에 주석을 달고 Camel에서 해당 경로를 포함할 수 있습니다.
< packageScan> 설명서에서 위에서 언급한 것처럼 ANT 스타일을 포함 및 제외할 수도
있습니다.