test example ejemplos java spring spring-boot jdbctemplate spring-annotations

java - example - Multiple DataSource y JdbcTemplate en Spring Boot(> 1.1.0)



spring boot test jdbctemplate (2)

Me gustaría inyectar una JdbcTemplate específica en un proyecto de Spring Boot. Traté de seguir este ejemplo para la configuración múltiple de DataSource : http://spring.io/blog/2014/05/27/spring-boot-1-1-0-m2-available-now

Mi código se compila y ejecuta, pero solo se tiene en cuenta el DataSource con la anotación @Primary , sin importar lo que puse como @Qualifier en la clase SqlService . Mi código relevante es el siguiente:

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); } }

Y hice un servicio rápido para probarlo:

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"; } }


Debería verse así:

@Bean(name = "jdbcSlave") @Autowired public JdbcTemplate slaveJdbcTemplate(@Qualifier("dsSlave") DataSource dsSlave) { return new JdbcTemplate(dsSlave); }


Intenta mover la anotación @Qualifier al parameter en tus métodos JdbcTemplate para JdbcTemplate .

Supongo que cuando eliminas @Primary terminas con un error, donde se presentan more than one appropriate beans are presented