关于
有时候,随着业务的发展,项目关联的数据来源会变得越来越复杂,使用的数据库会比较分散,这个时候就会采用多数据源的方式来获取数据。另外,多数据源也有其他好处,例如分布式数据库的读写分离,集成多种数据库等等。下面分享我在实际项目中配置多数据源的案例。
步骤
1.application.yml文件中,配置数据库源。这里primary是主库,secondary是从库。
server:
port: 8089
# 多数据源配置
#primary
spring:
primary:
datasource:
url: jdbc:mysql://127.0.0.1:3306/database1?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
username: root
password: ******
driver-class-name: com.mysql.jdbc.Driver
#secondary
secondary:
datasource:
url: jdbc:mysql://127.0.0.1:3306/database1?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
username: root
password: ******
driver-class-name: com.mysql.jdbc.Driver
jpa:
hibernate:
primary-dialect: org.hibernate.dialect.MySQL5Dialect
secondary-dialect: org.hibernate.dialect.MySQL5Dialect
open-in-view: true
show-sql: true
复制代码
2.创建一个Spring配置类,其中spring.primary.datasource的路径参考yml文件的配置。
@Configuration
public class DataSourceConfig {
@Bean(name = "primaryDataSource")
@Qualifier("primaryDataSource")
@ConfigurationProperties(prefix="spring.primary.datasource")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "secondaryDataSource")
@Qualifier("secondaryDataSource")
@Primary
@ConfigurationProperties(prefix="spring.secondary.datasource")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
}
复制代码
3.分别创建主库、从库的配置类。 注意:entity包和dao包的配置,以及@Primary注解指定主库。
主库配置类: