Spring Boot Configure and Use Two DataSources

后端 未结 9 2160
不思量自难忘°
不思量自难忘° 2020-11-22 04:26

How can I configure and use two data sources?

For example here is what I have for the first data source:

application.properties



        
9条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-11-22 05:02

    @Primary annotation when used against a method like below works good if the two data sources are on the same db location/server.

    @Bean(name = "datasource1")
    @ConfigurationProperties("database1.datasource")
    @Primary
    public DataSource dataSource(){
      return DataSourceBuilder.create().build();
    }
    
    @Bean(name = "datasource2")
    @ConfigurationProperties("database2.datasource")
    public DataSource dataSource2(){
      return DataSourceBuilder.create().build();
    }
    

    If the data sources are on different servers its better to use @Component along with @Primary annotation. The following code snippet works well on two different data sources at different locations

    database1.datasource.url = jdbc:mysql://127.0.0.1:3306/db1
    database1.datasource.username = root
    database1.datasource.password = mysql
    database1.datasource.driver-class-name=com.mysql.jdbc.Driver
    
    database2.datasource1.url = jdbc:mysql://192.168.113.51:3306/db2
    database2.datasource1.username = root
    database2.datasource1.password = mysql
    database2.datasource1.driver-class-name=com.mysql.jdbc.Driver
    
    @Configuration
    @Primary
    @Component
    @ComponentScan("com.db1.bean")
    class DBConfiguration1{
        @Bean("db1Ds")
        @ConfigurationProperties(prefix="database1.datasource")
        public DataSource primaryDataSource() {
            return DataSourceBuilder.create().build();
        }
    
    }
    
    @Configuration
    @Component
    @ComponentScan("com.db2.bean")
    class DBConfiguration2{
        @Bean("db2Ds")
        @ConfigurationProperties(prefix="database2.datasource1")
        public DataSource primaryDataSource() {
            return DataSourceBuilder.create().build();
        }
    
    }
    

提交回复
热议问题