第 4 章 在 Spring XML 中使用 Camel
Spring XML
将 Camel 与 Spring XML 文件一起使用,是一种在 Camel 中使用 XML DSL 的方法。Camel 过去使用 Spring XML 长时间。Spring 框架以 XML 文件开始,作为构建 Spring 应用程序的常见配置。
Spring 应用程序示例
<CamelContext id="camel-A" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="seda:start"/> <to uri="mock:result"/> </route> </camelContext>
== Configuring Components and Endpoints You can configure your Component or Endpoint instances in your Spring XML as follows in this example. [source,xml]
== Configuring Components and Endpoints
You can configure your Component or Endpoint instances in your Spring XML as follows in this example.
[source,xml]
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> </camelContext>
<bean id="jmsConnectionFactory" class="org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp:someserver:61616"/> </bean> <bean id="jms" class="org.apache.camel.component.jms.JmsComponent"> <property name="connectionFactory"> <bean class="org.apache.activemq.artemis.jms.client.ActiveMQCFactory"> <property name="brokerURL" value="tcp:someserver:61616"/> </bean> </property> </bean>
<CamelContext xmlns="http://camel.apache.org/schema/spring"> <routeBuilder ref="myBuilder"/> </camelContext>
<bean id="myBuilder" class="org.apache.camel.spring.example.test1.MyRouteBuilder"/>
== Using package scanning Camel also provides a powerful feature that allows for the automatic discovery and initialization of routes in given packages. This is configured by adding tags to the camel context in your spring context definition, specifying the packages to be recursively searched for `RouteBuilder` implementations. To use this feature add a <package></package> tag specifying a comma separated list of packages that should be searched. For example, [source,xml]
== Using package scanning
Camel also provides a powerful feature that allows for the automatic discovery and initialization of routes in given packages. This is configured by adding tags to the camel context in your spring context definition, specifying the packages to be recursively searched for `RouteBuilder` implementations. To use this feature add a <package></package> tag specifying a comma separated list of packages that should be searched. For example,
[source,xml]
<CamelContext> <packageScan> <package>com.foo</package& <excludes> gt; .Excluded</excludes> <includes& gt; 114</includes> </packageScan> </camelContext>
This scans for RouteBuilder classes in the `com.foo` and the sub-packages. You can also filter the classes with includes or excludes such as: [source,xml]
This scans for RouteBuilder classes in the `com.foo` and the sub-packages.
You can also filter the classes with includes or excludes such as:
[source,xml]
<CamelContext> <packageScan> <package>com.foo</package <excludes> ></excludes> the </packageScan> </camelContext>
<!-- 启用 Spring @Component scan -→ <context:component-scan base-package="org.apache.camel.spring.issues.contextscan"/>
<CamelContext xmlns="http://camel.apache.org/schema/spring"> <!--,然后让 Camel 使用这些 @Component Scan route builders -→ <contextScan/> </camelContext>
This allows you to just annotate your routes using the Spring `@Component` and have those routes included by Camel: [source,java]
This allows you to just annotate your routes using the Spring `@Component` and have those routes included by Camel:
[source,java]
@component public class MyRoute 扩展 RouteBuilder {
You can also use the ANT style for inclusion and exclusion, as mentioned above in the package scan section. :leveloffset!:
You can also use the ANT style for inclusion and exclusion, as mentioned above in the package scan section.
:leveloffset!: