15.2. Camel Bean Integration


Camel annotations

As part of the Camel bean integration, Camel comes with a set of annotations that are seamlessly supported by Camel CDI. So you can use any of these annotations in your CDI beans, for example:
Expand
Camel annotation CDI equivalent
Configuration property
@PropertyInject("key")
String value;
Copy to Clipboard Toggle word wrap
@Inject
@ConfigProperty(name = "key")
String value;
Copy to Clipboard Toggle word wrap
See configuration properties for more details.
Producer template injection (default Camel context)
@Produce(uri = "mock:outbound")
ProducerTemplate producer;
Copy to Clipboard Toggle word wrap
@Inject
@Uri("direct:outbound")
ProducerTemplate producer;
Copy to Clipboard Toggle word wrap
Endpoint injection (default Camel context)
@EndpointInject(uri = "direct:inbound")
Endpoint endpoint;
Copy to Clipboard Toggle word wrap
@Inject
@Uri("direct:inbound")
Endpoint endpoint;
Copy to Clipboard Toggle word wrap
Endpoint injection (Camel context by name)
@EndpointInject(uri = "direct:inbound", context = "foo")
Endpoint contextEndpoint;
Copy to Clipboard Toggle word wrap
@Inject
@ContextName("foo")
@Uri("direct:inbound")
Endpoint contextEndpoint;
Copy to Clipboard Toggle word wrap
Bean injection (by type)
@BeanInject
MyBean bean;
Copy to Clipboard Toggle word wrap
@Inject
MyBean bean;
Copy to Clipboard Toggle word wrap
Bean injection (by name)
@BeanInject("foo")
MyBean bean;
Copy to Clipboard Toggle word wrap
@Inject
@Named("foo")
MyBean bean;
Copy to Clipboard Toggle word wrap
POJO consuming
@Consume(uri = "seda:inbound")
void consume(@Body String body) {
    //...
}
Copy to Clipboard Toggle word wrap

Bean component

You can refer to CDI beans, either by type or name, From the Camel DSL, for example with the Java Camel DSL:
class MyBean {
	//...
}
 
from("direct:inbound").bean(MyBean.class);
Copy to Clipboard Toggle word wrap
Or to lookup a CDI bean by name from the Java DSL:
@Named("foo")
class MyNamedBean {
	//...
}
 
from("direct:inbound").bean("foo");
Copy to Clipboard Toggle word wrap

Referring beans from Endpoint URIs

When configuring endpoints using the URI syntax you can refer to beans in the Registry using the # notation. If the URI parameter value starts with a # sign then Camel CDI will lookup for a bean of the given type by name, for example:
from("jms:queue:{{destination}}?transacted=true&transactionManager=#jtaTransactionManager").to("...");
Copy to Clipboard Toggle word wrap
Having the following CDI bean qualified with @Named("jtaTransactionManager"):
@Produces
@Named("jtaTransactionManager")
PlatformTransactionManager createTransactionManager(TransactionManager transactionManager, UserTransaction userTransaction) {
    JtaTransactionManager jtaTransactionManager = new JtaTransactionManager();
    jtaTransactionManager.setUserTransaction(userTransaction);
    jtaTransactionManager.setTransactionManager(transactionManager);
    jtaTransactionManager.afterPropertiesSet();
    return jtaTransactionManager;
}
Copy to Clipboard Toggle word wrap
Back to top
Red Hat logoGithubredditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat Documentation

We help Red Hat users innovate and achieve their goals with our products and services with content they can trust. Explore our recent updates.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

Theme

© 2025 Red Hat