Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • lookup or creating endpoints
  • lookup of beans in the Registry
  • additional supported in Spring XML (see below in examples)
  • using Blueprint PropertyPlaceholder with Camel Properties component
  • using @PropertyInject to inject a property in a POJO

Syntax

The syntax to use Camel's property placeholder is to use {{key}} for example {{file.uri}} where file.uri is the property key.
You can use property placeholders in parts of the endpoint URI's which for example you can use placeholders for parameters in the URIs.

...

The ignoreMissingLocationWithPropertiesComponent can be used to instruct Camel to ignore any locations which was not discoverable, for example if you run the unit test, in an environment that does not have access to the location of the properties.

Using @PropertyInject

Available as of Camel 2.12

Camel allows to inject property placeholders in POJOs using the @PropertyInject annotation which can be set on fields and setter methods.
For example you can use that with RouteBuilder classes, such as shown below:

Code Block
java
java

public class MyRouteBuilder extends RouteBuilder {

    @PropertyInject("hello")
    private String greeting;

    @Override
    public void configure() throws Exception {
        from("direct:start")
            .transform().constant(greeting)
            .to("{{result}}");
    }

}

Notice we have annotated the greeting field with @PropertyInject and define it to use the key "hello". Camel will then lookup the property with this key and inject its value, converted to a String type.

You can also use multiple placeholders and text in the key, for example we can do:

Code Block

    @PropertyInject("Hello {{name}} how are you?")
    private String greeting;

This will lookup the placeholder with they key "name".

You can also add a default value if the key does not exists, such as:

Code Block

    @PropertyInject("myTimeout", default = "5000")
    private int timeout;