如何在一个应用程序中使用普通用户可以访问这两个数据库配置 2 个数据库?

问题描述

对于不同的城市和具有 ADMIN 角色的用户,将有 2 个具有相同数据的数据库,该用户可以访问两个城市。 我搜索了它并获得了一些信息,例如

#first db
spring.datasource.url = [url]
spring.datasource.username = [username]
spring.datasource.password = [password]
spring.datasource.driverClassName = org.postgresql.Driver

#second db ...
spring.secondDatasource.url = [url]
spring.secondDatasource.username = [username]
spring.secondDatasource.password = [password]
spring.secondDatasource.driverClassName = org.postgresql.Driver

但是我找不到关于普通用户的信息。有人可以帮我吗?

解决方法

因此,您有两个不同的数据库,因为您应该创建两个具有不同属性前缀的 DataSource bean。

@Bean
@ConfigurationProperties(prefix = "spring.datasource1")
public DataSource primaryDataSource() {
    return DataSourceBuilder.create().build();
}

@Bean
@ConfigurationProperties(prefix = "spring.datasource2")
public DataSource secondaryDataSource() {
    return DataSourceBuilder.create().build();
}

以及 dataSourcesapplication.yaml 的不同设置:

spring:
  application:
    name: name
  datasource1:
    platform: postgresql
    driver-class-name: org.postgresql.Driver
    url: url1
    username: admin
    password: secret
    name:  
    hikari:

spring:
  application:
    name: name
  datasource2:
    platform: postgresql
    driver-class-name: org.postgresql.Driver
    url: url2
    username: admin
    password: secret
    name:  
    hikari:  

之后,您将有 2 个 bean primaryDataSourcesecondaryDataSource 用于访问第一个或第二个数据库。