spring boot 使用多数据源
环境配置:
- spring boot 2.1.6
- 数据库为mysql8
- 配置文件为application.properties
涉及到的注解:
- @Configuration 代替xml配置spring容器
- @Bean 声明bean的属性
- @Qualifier 用于指明要注入的bean
- @ConfigurationProperties 从配置文件中读取数据进行注入
1.将数据库连接的相关信息
注意数据库连接的url 需要用jdbc-url
# all_in_one库
spring.datasource.gps.jdbc-url=jdbc:mysql://192.168.10.1:3306/gpsoriginal?useSSL=false
spring.datasource.gps.username=root
spring.datasource.gps.password=111111
spring.datasource.gps.driver-class-name=com.mysql.cj.jdbc.Driver
# gpsoriginal库
spring.datasource.allinone.jdbc-url=jdbc:mysql://192.168.10.1:3306/all_in_one?useSSL=false
spring.datasource.allinone.username=root
spring.datasource.allinone.password=111111
spring.datasource.allinone.driver-class-name=com.mysql.cj.jdbc.Driver
2.编写config类
这里结合了JdbcTemplate,如果不想用可以直接通过DataSource获取数据库连接
Configuration
public class DataSourceConfig {
@Bean(name = "GpsDataSource")
@Qualifier("GpsDataSource")
@ConfigurationProperties(prefix="spring.datasource.gps")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "allInOneDataSource")
@Qualifier("allInOneDataSource")
@Primary
@ConfigurationProperties(prefix="spring.datasource.allinone")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
//上面是多数据源,下面是JdbcTemplate
@Bean(name = "GpsJdbcTemplate")
public JdbcTemplate GpsJdbcTemplate(
@Qualifier("GpsDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean(name = "allInOneJdbcTemplate")
public JdbcTemplate allInOneJdbcTemplate(
@Qualifier("allInOneDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
3.数据调用
只需再dao层将数据源注入即可
@Autowired
@Qualifier("allInOneJdbcTemplate")
JdbcTemplate jdbcTemplate;
网友评论