Repository: camel Updated Branches: refs/heads/master 421c6bfe1 -> 00b59137b
Added annotation dsl to Gitbook Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/00b59137 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/00b59137 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/00b59137 Branch: refs/heads/master Commit: 00b59137b4e9c984a72971c9c610becbbd1e8184 Parents: 421c6bf Author: Andrea Cosentino <anco...@gmail.com> Authored: Tue Jul 19 11:38:45 2016 +0200 Committer: Andrea Cosentino <anco...@gmail.com> Committed: Tue Jul 19 11:38:45 2016 +0200 ---------------------------------------------------------------------- docs/user-manual/en/SUMMARY.md | 1 + docs/user-manual/en/bean-integration.adoc | 103 +++++++++++++++++++++++++ 2 files changed, 104 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/00b59137/docs/user-manual/en/SUMMARY.md ---------------------------------------------------------------------- diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md index 59eef2f..4ca66ae 100644 --- a/docs/user-manual/en/SUMMARY.md +++ b/docs/user-manual/en/SUMMARY.md @@ -26,6 +26,7 @@ * [Scala DSL Getting Started](scala-dsl-getting-started.adoc) * [Scala DSL EIP](scala-dsl-eip.adoc) * [Scala DSL Supported Languages](scala-dsl-supported-languages.adoc) + * [Annotation DSL](bean-integration.adoc) * [Endpoint](endpoint.adoc) * [Exchange](exchange.adoc) * [Exchange Pattern](exchange-pattern.adoc) http://git-wip-us.apache.org/repos/asf/camel/blob/00b59137/docs/user-manual/en/bean-integration.adoc ---------------------------------------------------------------------- diff --git a/docs/user-manual/en/bean-integration.adoc b/docs/user-manual/en/bean-integration.adoc new file mode 100644 index 0000000..0937240 --- /dev/null +++ b/docs/user-manual/en/bean-integration.adoc @@ -0,0 +1,103 @@ +[[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 link:spring.html[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 +link:registry.html[Registry]. See link:bean-injection.html[Bean +Injection]. + +|`@PropertyInject` |*Camel 2.12:* To inject a value using +link:using-propertyplaceholder.html[property placeholder]. + +|`@Produce` |To inject a producer to send message to an endpoint. See +link:pojo-producing.html[POJO Producing]. + +|`@Consume` |To inject a consumer on a method. See link:pojo-consuming.html[POJO +Consuming]. +|======================================================================= + +See more details at: + +* link:pojo-consuming.html[POJO Consuming] to consume and possibly route +messages from Camel +* link:pojo-producing.html[POJO Producing] to make it easy to produce +camel messages from your POJOs +* link:dynamicrouter-annotation.html[DynamicRouter Annotation] for +creating a link:dynamic-router.html[Dynamic Router] from a POJO method +* link:recipientlist-annotation.html[RecipientList Annotation] for +creating a link:recipient-list.html[Recipient List] from a POJO method +* link:routingslip-annotation.html[RoutingSlip Annotation] for creating +a link:routing-slip.html[Routing Slip] for a POJO method +* link:bean-injection.html[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 +link:spring-remoting.html[Spring Remoting] or +link:pojo-producing.html[POJO Producing] + +*Example* + +See the link:pojo-messaging-example.html[POJO Messaging Example] for how +to use the annotations for routing and messaging. + +[[BeanIntegration-BeanComponent]] +Bean Component +^^^^^^^^^^^^^^ + +The link:bean.html[Bean] component allows one to invoke a particular +method. Alternately the link:bean.html[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 link:spring-remoting.html[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 +link:components.html[Components] to communicate between beans. It also +means we can use link:content-based-router.html[Content Based Router] +and the other link:enterprise-integration-patterns.html[Enterprise +Integration Patterns] in between the beans; in particular we can use +link:message-translator.html[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 +(link:bean.html[Bean] component, link:spring-remoting.html[Spring +Remoting] or link:pojo-consuming.html[POJO Consuming]) then the +*link:bean-binding.html[Bean Binding]* mechanism is used to figure out +what method to use (if it is not explicit) and how to bind the +link:message.html[Message] to the parameters possibly using the +link:parameter-binding-annotations.html[Parameter Binding Annotations] +or using a link:bean-binding.html[method name option].