springboot2.0多数据源

最近了解了springboot2.0多数据,网上搜了些资料,并实践了下,成功并做如下记录。

配置需要两步:

application.yml

spring:
  datasource:
    primary:
      jdbc-url: jdbc:mysql://localhost:3306/leven?useUnicode=true&characterEncoding=utf8&useSSL=false
      username: root
      password: 123456
      driver-class-name: com.mysql.jdbc.Driver

    secondary:
      jdbc-url: jdbc:mysql://localhost:3306/my?useUnicode=true&characterEncoding=utf8&useSSL=false
      username: root
      password: 123456
      driver-class-name: com.mysql.jdbc.Driver

新建数据源配置Java类

@Configuration
public class DataSourceConfig {

    @Bean(name = "primaryDataSource")
    @Qualifier("primaryDataSource")
    @ConfigurationProperties(prefix="spring.datasource.primary")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "primaryJdbcTemplate")
    public JdbcTemplate primaryJdbcTemplate(
            @Qualifier("primaryDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

    @Bean(name = "secondaryDataSource")
    @Qualifier("secondaryDataSource")
    @ConfigurationProperties(prefix="spring.datasource.secondary")
    public DataSource secondaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "secondaryJdbcTemplate")
    public JdbcTemplate secondaryJdbcTemplate(
            @Qualifier("secondaryDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

}

做好这两步,数据源的配置算做好了,里面的一些配置属性根据自己的情况自行修改即可。


接下来开始使用配置的两个mysql数据源。

我新建了一个DemoController类

@RestController
public class DemoController {

    private final Logger log = LoggerFactory.getLogger(DemoController.class);

    @Autowired
    @Qualifier("primaryJdbcTemplate")
    private JdbcTemplate levenData;

    @Autowired
    @Qualifier("secondaryJdbcTemplate")
    private JdbcTemplate myDate;


    @RequestMapping("/leven")
    public String test(){
        List my = levenData.queryForList("select name from my");
        log.info("=="+my);
        return my.toString();
    }

    @RequestMapping("/my")
    public String my(){
        List test = myDate.queryForList("select * from test");
        log.info("=="+test);
        return test.toString();
    }

}

根据自己的实际情况修改sql。


实践过程出现的问题记录。

springboot2.0多数据源_第1张图片

由于我实践的时候参考的资料都是springboot1.5版本以前的,application.yml文件里的datasource的jdbc属性都是用的是url,即

springboot2.0多数据源_第2张图片

修改成jdbc-url,问题解决

你可能感兴趣的:(springboot)