You just leverage the feature which is provided by spring. I think it’s OK to do it that way.
-- Willem Jiang Red Hat, Inc. Web: http://www.redhat.com Blog: http://willemjiang.blogspot.com (English) http://jnn.iteye.com (Chinese) Twitter: willemjiang Weibo: 姜宁willem On October 10, 2014 at 8:39:03 PM, Ziemer, Tom ([email protected]) wrote: > Hi, > > currently I am setting up a new project using Spring and Camel. For a change, > I wanted to > use JavaConfig instead of the XML and had little problem injecting a > ProducerTemplate. > I am aiming for ConstructorBasedInjection, and @EndpointInject did not work > for me. > What I ended up doing is the following: > > @Configuration > @PropertySource("classpath:foo.properties") > @EnableJpaRepositories(basePackages = "x.y.foo.repository") > @EnableTransactionManagement > @ComponentScan(basePackages = { "x.y.foo.service", "x.y.foo.camel" }) > public class ApplicationContext extends CamelConfiguration { > > .... > @Bean(destroyMethod = "stop") > public ProducerTemplate producerTemplate() throws Exception{ > return camelContext().createProducerTemplate(); > } > ... > } > > This way I can use @Autowired to inject a producerTemplate: > > @Service > public class FooServiceImpl implements FooService { > private final ProducerTemplate producerTemplate; > > @Autowired > public QuoteServiceImpl(ProducerTemplate producerTemplate) { > Assert.notNull(producerTemplate, "producerTemplate must not be null."); > this.producerTemplate = producerTemplate; > } > ... > } > > Is this approach acceptable or is there a better way? > > Regards, > Tom >
