簡體   English   中英

Spring Boot中的多個DataSource和JdbcTemplate(> 1.1.0)

[英]Multiple DataSource and JdbcTemplate in Spring Boot (> 1.1.0)

我想在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";
    }

}

它應該是這樣的:

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

嘗試將@Qualifier注釋移動到JdbcTemplate@Bean方法的parameter

我想,當你刪除@Primary你最終會出現錯誤,其中會出現more than one appropriate beans are presented

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM