spring多数据源

(1)首先要把Spring Boot自带的DataSourceAutoConfiguration禁用,因为它会读取application.properties文件中的Spring.datasource.*属性并自动配置单数据源。
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
(2)在application.properties中添加数据源连接,生成环境中请使用连接池。
## test1 database
spring.datasource.test1.url=jdbc:mysql://localhost:3307/multipledatasource1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
spring.datasource.test1.username=root
spring.datasource.test1.password=root
spring.datasource.test1.driver-class-name=com.mysql.cj.jdbc.Driver
## test2 database
spring.datasource.test2.url=jdbc:mysql://localhost:3307/multipledatasource2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
spring.datasource.test2.username=root
spring.datasource.test2.password=root
spring.datasource.test2.driver-class-name=com.mysql.cj.jdbc.Driver
(3)由于我们禁用了自动数据源配置,因此下一步要手动将这些数据源创建出来。新建DataSourceConfig类并配置数据源信息。
 @Configuration
public class DataSourceConfig {
    @Bean(name="db1")
    @ConfigurationProperties(prefix = "spring.datasource.test1")
    public DataSource dataSource1(){
        return DataSourceBuilder.create().build();
    }
    @ConfigurationProperties(prefix = "spring.datasource.test2")
    public DataSource dataSource2(){
        return DataSourceBuilder.create().build();
    }
}

@ConfigurationProperties读取配置文件中的指定值
(4)分别为两个Mapper指定数据源
@Configuration
@MapperScan(basePackages = {"com.cloud.skyme.mapper.d1"},sqlSessionFactoryRef = "sqlSessionFactory1")
public class MybatisDbAConfig {
    @Autowired
    @Qualifier("db1")
    private DataSource db1;
}
同理,另一个数据源的注入方式于上述这个相同。
(5)配置完成后,将TUserMapper注入UserController。

 

 

你可能感兴趣的:(spring)