在Spring Boot(> 1.1.0)中使用多个数据源和JdbcTemplate

8 浏览
0 Comments

在Spring Boot(> 1.1.0)中使用多个数据源和JdbcTemplate

我想在一个Spring Boot项目中注入一个特定的JdbcTemplate。我尝试按照这个示例配置多个DataSource:http://spring.io/blog/2014/05/27/spring-boot-1-1-0-m2-available-now

我的代码可以编译和运行,但是只有带有@Primary注解的DataSource被考虑在内,无论我在SqlService类中使用什么@Qualifier。我相关的代码如下:

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

}

}

我做了一个快速服务来尝试它:

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

}

}

0