anchor.diff:  xref:type-converter.adoc[Type Converter] mechanism to convert from the
   expression value to the actual type of the parameter.
   
  -The core annotations are as follows
  -
  -[width="100%",cols="34%,33%,33%",options="header",]
  -|=======================================================================
  -|Annotation |Meaning |Parameter
  -|`org.apache.camel.Body`
  -|To bind to an inbound message body | 
  -
  -|`org.apache.camel.ExchangeException`
  -|To bind to an Exception set on the exchange | 
  -
  -|`org.apache.camel.Header`
  -|To bind to an inbound message header |String name of the header
  -
  -|`org.apache.camel.Headers`
  -|To bind to the Map of the inbound message headers | 
  -
  -|`org.apache.camel.OutHeaders`
  -|To bind to the Map of the outbound message headers | 
  -
  -|`org.apache.camel.Property`
  -|To bind to a named property on the exchange |String name of the
  -property
  -
  -|`org.apache.camel.Properties`
  -|To bind to the property map on the exchange | 
  -
  -|`org.apache.camel.Handler`
  -|Not part as a type parameter but stated in this table anyway to spread
  -the good word that we have this annotation in Camel now. See more at
  -xref:bean-binding.adoc[Bean Binding]. | 
  -|=======================================================================
  -
  -The follow annotations `@Headers`, `@OutHeaders` and `@Properties` binds
  -to the backing `java.util.Map` so you can alter the content of these
  -maps directly, for instance using the `put` method to add a new entry.
  -See the OrderService class at xref:exception-clause.adoc[Exception
  -Clause] for such an example. You can use `@Header("myHeader")` and
  -`@Property("myProperty")` to access the backing `java.util.Map`.
  -
  -[[ParameterBindingAnnotations-Example]]
  -== Example
  -
  -In this example below we have a @Consume consumer (like message driven)
  -that consumes JMS messages from the activemq queue. We use the @Header
  -and @Body parameter binding annotations to bind from the JMSMessage to
  +== Using bean parameter binding annotations
  +
  +In this example below we have a `@Consume` consumer (like message driven)
  +that consumes JMS messages from the activemq queue. We use the `@Header`
  +and `@Body` parameter binding annotations to bind from the JMSMessage to
   the method parameters.
   
  -[source,syntaxhighlighter-pre]
  -----
  -public class Foo {
  -    
  -    @Consume(uri = "activemq:my.queue")
  +[source,java]
  +----
  +public class MyBean {
  +
  +    @Consume("activemq:my.queue")
       public void doSomething(@Header("JMSCorrelationID") String correlationID, @Body String body) {
           // process the inbound message here
       }
  
positive.code: ----
  
  In the above Camel will extract the value of
  Message.getJMSCorrelationID(), then using the
  xref:type-converter.adoc[Type Converter] to adapt the value to the type
  of the parameter if required - it will inject the parameter value for
  the *correlationID* parameter. Then the payload of the message will be
  converted to a String and injected into the *body* parameter.
  
  You don't necessarily need to use the @Consume annotation if you don't
  want to as you could also make use of the Camel xref:dsl.adoc[DSL] to
  route to the bean's method as well.
  
  [[ParameterBindingAnnotations-UsingtheDSLtoinvokethebeanmethod]]
  === Using the DSL to invoke the bean method
  
  Here is another example which does not use xref:pojo-consuming.adoc[POJO
  Consuming] annotations but instead uses the xref:dsl.adoc[DSL] to route
  messages to the bean method
  
  [source,syntaxhighlighter-pre]
  ----
  public class Foo {
      public void doSomething(@Header("JMSCorrelationID") String correlationID, @Body String body) {
          // process the inbound message here
      }
  
negative.code: Camel. You can mix and match the annotations with the normal parameters,
  so we can have this example with annotations and the Exchange also:
  
  [source,java]
  ----
  public class MyBean {
  
      public void doSomething(@Header("user") String user, @Body String body, Exchange exchange) {
          exchange.getIn().setBody(body + "MyBean");
      }
  
  }
  ----
  
  === Annotation Based Expression Language
  
  You can also use any of the xref:languages.adoc[Languages] supported in
  Camel to bind expressions to method parameters when using
  xref:bean-integration.adoc[Bean Integration]. For example, you can use
  any of these annotations:
  
  [width="100%",cols="50%,50%",options="header",]
  |=======================================================================
  |Annotation |Description
  |`@Bean`
  |Inject a xref:components:languages:bean-language.adoc[Bean] expression
  
  |`@Constant`
  |Inject a xref:components:languages:constant-language.adoc[Constant] expression
  
  |`@Groovy`
  |Inject a  xref:components:languages:groovy-language.adoc[Groovy] expression
  
  |`@Header`
  |Inject a xref:components:languages:header-language.adoc[Header] expression
  
  |`@Simple`
  |Inject an xref:components:languages:simple-language.adoc[Simple] expression
  
  |`@XPath`
  |Inject an xref:components:languages:xpath-language.adoc[XPath] expression
  
  |=======================================================================
  
  The table above only list some of the commonly used languages. You can find
  a list of all supported xref:latest@components:languages:index.adoc[Languages]
  which each have their own annotation that can be used.
  
  It is required to include the JAR of the language, for example `camel-groovy`,
  or `camel-jsonpath` to use the `@JSonPath` annotation.
  
  Here is an example how to use `@XPath`:
  
  [source,java]
  ----
  public class Foo {
  
      @Consume("activemq:my.queue")
      public void doSomething(@XPath("/foo/bar/text()") String correlationID, @Body String body) {
          // process the inbound message here
      }
  
  }
  ----
  
  ==== Advanced example using @Bean
  
  And an example of using the the `@Bean` binding annotation,
  where you can call a xref:components::bean-component.adoc[POJO] to supply
  the parameter value:
  
  [source,java]
  ----
  public class MyBean {
      
      @Consume("activemq:my.queue")
      public void doSomething(@Bean("myCorrelationIdGenerator") String correlationID, @Body String body) {
          // process the inbound message here
      }
  }
  ----
  
  When a message is consumed from the activemq queue, then Camel will invoke the `doSomething`
  method. The parameter with `@Bean` is telling Camel to call yet another bean that
  computes the correlation id parameter:
  
  [source,java]
  ----
  public class MyIdGenerator {
  
  