Multiple DataSource and JdbcTemplate in Spring Boot (> 1.1.0)
java, jdbctemplate, spring, spring-annotations, spring-boot
Solution
Try to move `@Qualifier` annotation to the `parameter` on your `@Bean` methods for `JdbcTemplate`.
I guess, when you remove `@Primary` you end up with error, where `more than one appropriate beans are presented`
Problem
I would like to inject a specific `JdbcTemplate`in a Spring Boot project. I tried to follow this example for multiple `DataSource`configuration : http://spring.io/blog/2014/05/27/spring-boot-1-1-0-m2-available-now My code does compile and run, but only the DataSource with the `@Primary`annotation is taken into account, no matter what I put as `@Qualifier` in the `SqlService`class. My relevant code is the following : `DatabaseConfig.java`: ``` @Configuration public class DatabaseConfig { @Bean(name = "dsSlave") @ConfigurationProperties(prefix="spring.mysql_slave") public DataSource slaveDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "dsMaster") @Primary @ConfigurationProperties(prefix="spring.mysql_master") public DataSource masterDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "jdbcSlave") @Autowired @Qualifier("dsSlave") public JdbcTemplate slaveJdbcTemplate(DataSource dsSlave) { return new JdbcTemplate(dsSlave); } @Bean(name = "jdbcMaster") @Autowired @Qualifier("dsMaster") public JdbcTemplate masterJdbcTemplate(DataSource dsMaster) { return new JdbcTemplate(dsMaster); } } ``` And I did a quick service to try it out : `SqlService.java`: ``` @Component public class SqlService { @Autowired @Qualifier("jdbcSlave") private JdbcTemplate jdbcTemplate; public String getHelloMessage() { String host = jdbcTemplate.queryForObject("select @@hostname;", String.class); System.out.println(host); return "Hello"; } } ```