| [[BeanIntegration-BeanIntegration]] |
| Bean Integration |
| ~~~~~~~~~~~~~~~~ |
| |
| Camel supports the integration of beans and POJOs in a number of ways |
| |
| [[BeanIntegration-Annotations]] |
| Annotations |
| ^^^^^^^^^^^ |
| |
| If a bean is defined in Spring XML or scanned using |
| the Spring component scanning mechanism and a *<camelContext>* is used |
| or a `CamelBeanPostProcessor` then we process a number of Camel |
| annotations to do various things such as injecting resources or |
| producing, consuming or routing messages. |
| |
| The following annotations is supported and inject by Camel's |
| `CamelBeanPostProcessor` |
| |
| [width="100%",cols="10%,90%",options="header",] |
| |======================================================================= |
| |Annotation |Description |
| |
| |`@EndpointInject` |To inject an endpoint, see more details at link:pojo-producing.html[POJO |
| Producing]. |
| |
| |`@BeanInject` |*Camel 2.13:* To inject a bean obtained from the |
| Registry. See link:bean-injection.html[Bean |
| Injection]. |
| |
| |`@PropertyInject` |*Camel 2.12:* To inject a value using |
| property placeholder. |
| |
| |`@Produce` |To inject a producer to send message to an endpoint. See |
| POJO Producing. |
| |
| |`@Consume` |To inject a consumer on a method. See link:pojo-consuming.adoc[POJO |
| Consuming]. |
| |======================================================================= |
| |
| See more details at: |
| |
| * POJO Consuming to consume and possibly route |
| messages from Camel |
| * POJO Producing to make it easy to produce |
| camel messages from your POJOs |
| * DynamicRouter Annotation for |
| creating a Dynamic Router from a POJO method |
| * RecipientList Annotation for |
| creating a Recipient List from a POJO method |
| * RoutingSlip Annotation for creating |
| a Routing Slip for a POJO method |
| * Bean Injection to inject Camel related |
| resources into your POJOs |
| * link:using-exchange-pattern-annotations.html[Using Exchange Pattern |
| Annotations] describes how the pattern annotations can be used to change |
| the behaviour of method invocations with |
| Spring Remoting or |
| POJO Producing |
| |
| *Example* |
| |
| See the POJO Messaging Example for how |
| to use the annotations for routing and messaging. |
| |
| [[BeanIntegration-BeanComponent]] |
| Bean Component |
| ^^^^^^^^^^^^^^ |
| |
| The <<bean-component,Bean>> component allows one to invoke a particular |
| method. Alternately the <<bean-component,Bean>> component supports the |
| creation of a proxy via |
| http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/component/bean/ProxyHelper.html[ProxyHelper] |
| to a Java interface; which the implementation just sends a message |
| containing a |
| http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/component/bean/BeanInvocation.html[BeanInvocation] |
| to some Camel endpoint. |
| |
| [[BeanIntegration-SpringRemoting]] |
| Spring Remoting |
| ^^^^^^^^^^^^^^^ |
| |
| We support a Spring Remoting provider which |
| uses Camel as the underlying transport mechanism. The nice thing about |
| this approach is we can use any of the Camel transport |
| Components to communicate between beans. It also |
| means we can use Content Based Router |
| and the other link:enterprise-integration-patterns.adoc[Enterprise |
| Integration Patterns] in between the beans; in particular we can use |
| Message Translator to be able to convert |
| what the on-the-wire messages look like in addition to adding various |
| headers and so forth. |
| |
| *Bean binding* |
| |
| Whenever Camel invokes a bean method via one of the above methods |
| (<<bean-component,Bean>> component, link:spring-remoting.html[Spring |
| Remoting] or POJO Consuming) then the |
| *Bean Binding* mechanism is used to figure out |
| what method to use (if it is not explicit) and how to bind the |
| Message to the parameters possibly using the |
| Parameter Binding Annotations |
| or using a method name option. |