...
Now we are nearly there, we just need to add Camel to the Spring XML file, so Spring knows Camel exists and can start it. First we need to add Camel to the schema location in the top of the XML file.
Code Block |
---|
|
...
xsi:schemaLocation="
http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
|
Now we are ready to let Spring and Camel work together. What we need to do is adding a CamelContext to the Spring XML file. Camel ships with a CamelContextFactoryBean that is a Spring factory bean we should use for creating and initializing the SpringCamelContext. SpringCamelContext is extending CamelContext to be Spring aware so Camel and Spring can work nicely together. For instance the Registry will now use Spring bean lookup. So any spring bean can now easily be lookup and used from Camel. Well back to today's lesson. So we can create a SpringCamelContext using the factory bean as illustrated below:
Code Block |
---|
|
<bean id="camel" class="org.apache.camel.spring.CamelContextFactoryBean"/>
|
However this is not used very often as Spring has support for custom namespace, so Camel has a CamelNamespaceHandler so we can create Camel using nice XML syntax as:
Code Block |
---|
|
<camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring">
...
</camelContext>
|
Adding route builder
Now we have Camel integrated but we still need to add our route bulder that we did manually from the javacode as:
Code Block |
---|
|
// append the routes to the context
context.addRoutes(new ReportIncidentRoutes());
|
There are two solutions to this
- using spring bean
- package scanning
Using a spring bean we just declare the route builder using a regular spring bean: