在项目中可能会遇到A服务访问B服务的数据库数据操作,这时候不想A用远程调用(RPC,RESTful 等)方式时,就可用考虑在A服务中使用多数据源配置,连接B服务数据,直接操作B服务的数据库
1.引入多数据源maven依赖
<dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>2.5.6</version> </dependency>
2.在A服务的启动类增加注解
3. appliaction.yml配置增加对应的数据库连接
spring: datasource: dynamic: primary: db1 # 配置默认数据库 datasource: db1: # 数据源1配置 url: jdbc:postgresql://xxxxxxxx/jusda_srm?currentSchema=jusda_srm username: postgres password: xxx driver-class-name: org.postgresql.Driver db2: # 数据源2配置 url: jdbc:postgresql://xxxxxx/lpm_jusda?currentSchema=lpm_jusda username: postgres password: xxx driver-class-name: org.postgresql.Driver durid: driver-class-name: org.postgresql.Driver max-active: 50 max-wait: 10000 min-idle: 3 initial-size: 5 autoconfigure: exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 去除druid配置
4.在mapper层使用 @DS注解连接对应数据库