Bean Injection
We support the injection of various resources using @EndpointInject or @BeanInject. This can be used to inject
-
Endpoint instances which can be used for testing when used with Mock endpoints; see the Spring Testing for an example.
-
ProducerTemplate instances for POJO Producing
-
client side proxies for POJO Producing which is a simple approach to Spring Remoting
Using @BeanInject
From Camel 2.13 onwards you can inject beans (obtained from the
Registry) into your beans such as RouteBuilder
classes.
For example to inject a bean named foo, you can enlist the bean in the Registry such as in a Spring XML file:
<bean id="foo" class="com.foo.MyFooBean"/>
And then in a Java RouteBuilder
class, you can inject the bean using
@BeanInject
as shown below:
public class MyRouteBuilder extends RouteBuilder {
@BeanInject("foo")
MyFooBean foo;
public void configure() throws Exception {
..
}
}
If you omit the name, then Camel does a lookup by type, and injects the bean if there is exactly only one bean of that type enlisted in the Registry.
@BeanInject
MyFooBean foo;