== Camel Example Spring Boot Route Template

This examples shows how to use Route Templates (parameterized routes) to specify a skeleton route
which can be used for creating and adding new routes via parameters.

We have prepared the example with the route template in both XML and Java DSL

The XML (default in use) is located in `src/main/resources/mycamel` folder.
The Java is in the `MyRouteTemplates.java` source file.

The `application.properties` is used to create two routes from the template using different set of parameters.

An alternative to create routes is from Java which is done in the `MyTemplateBuilder.java` class.

See the `MyCamelApplication.java` where you can change the source to use java instead of property file for the template parameters.

In case you would like to see how to create rules from a route template in Java, you can use the `java` Spring profile so that the classes `MyTemplateBuilder` and `MyRouteTemplates` will be automatically discovered.

=== Build

You will need to compile this example first:

----
$ mvn compile
----

=== How to run

You can run this example using

----
#to use xml template
$ mvn spring-boot:run

#to use java template
$ mvn spring-boot:run -Dspring-boot.run.profiles=java
----

=== Help and contributions

If you hit any problem using Camel or have some feedback, then please
https://camel.apache.org/community/support/[let us know].

We also love contributors, so
https://camel.apache.org/community/contributing/[get involved] :-)

The Camel riders!



