== Camel Example Main

This example shows how to run Camel standalone via the built-in Main class.
The example also demonstrates how you can configure the Camel application
via Camel built-in dependency-injection that supports binding via the
`@BindToRegistry`, `@BeanInject` and `@PropertyInject` annotations.

Also notice how you can configure Camel in the `application.properties` file.

=== Alternative example

The class `StandaloneCamel` is an alternative example that uses a
_public static void main_ class and where you manually setup Camel without
any help from Camel's built-in Main class. However it shows how to do this
in a _raw style_ without using any _magic_.

=== Generating tooling meta-data

The `camel-main-maven-plugin` is used for pre-scanning your project and prepare
autowiring and sprint boot tooling support by classpath scanning.

You can run this via

    mvn camel-main:generate

=== How to run

You can run this example using

    mvn camel:run

=== Help and contributions

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

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

The Camel riders!
