当前位置: 首页 > 知识库问答 >
问题:

基于客户/用户的Spring web应用程序集数据源

凌宏大
2023-03-14

我有一个使用多个数据库的Spring Web应用程序。有多个客户,每个客户都有自己的数据库。一个主数据库(客户身份验证数据库)有客户信息和连接字符串(或元数据)存储的客户数据库。我在Spring配置文件中创建了2个数据源bean定义。所以,我想根据客户设置第二个数据源。我尝试过根据客户设置第二个数据源。问题是看到,当另一个客户登录时,第二个数据源切换到新的客户数据库。我认为我的方法是完全错误的。任何想法??或者我们可以设置某种范围来避免问题。我的Spring配置文件有以下定义:

    <bean id="customerDS" class="org.springframework.jdbc.datasource.DriverManagerDataSource" lazy-init="true">
      <property name="driverClassName" value="${property.cust.db.driver}" />        
      <property name="url" value="${property.cust.db.url}" />
      <property name="username" value="${property.cust.db.username}" />
      <property name="password" value="${property.cust.db.password}" />      
    </bean>

    <bean id="userAuthDS" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
      <property name="driverClassName" value="${property.userauth.db.driver}" />        
      <property name="url" value="${property.userauth.db.url}" />
      <property name="username" value="${property.userauth.db.username}" />
      <property name="password" value="${property.userauth.db.password}" />
    </bean>

我有以下代码根据登录的客户设置第二个数据源:

@Autowired
private DriverManagerDataSource customerDS;
if(customer.equals("cust1")){
customerDS.setUrl("jdbc:sybase:Tds:127.0.0.1:2679?ServiceName=cust1");
customerDS.setUsername("dba");
customerDS.setPassword("sql");
}
if(customer.equals("cust2")){
customerDS.setUrl("jdbc:sybase:Tds:127.0.0.1:2689?ServiceName=cust1");
customerDS.setUsername("dba");
customerDS.setPassword("sql");
}

共有1个答案

赫连俊悟
2023-03-14

以下链接帮助我解决了这个问题:http://spring.io/blog/2007/01/23/dynamic-datasource-routing/

如果您仔细阅读并理解spring配置,您应该能够实现它。

 类似资料:
  • 在SpringJSFWeb应用程序中将Netty客户端处理程序配置为消息接收点,有没有具体的方法? 如果一些独立的Java应用程序充当Netty服务器,我如何接收到SpringJSFWeb应用程序的消息?

  • 我需要一个用于java spring应用程序的graphQL客户端,以与另一个基于graphQL API的微服务通信。我知道Apollo Android,但它似乎没有用maven实现(也许你知道maven的一些链接或示例等)。有什么想法和建议吗?提前感谢!

  • 我正在用LWIP和mbedTLS堆栈在嵌入式系统中开发FTPS客户端。 现在,我要做的是: 使用DHCP获取IP地址 现在,我需要打开一个数据连接来读取我的文件。所以我想知道的是,数据连接的安全性是否与控制连接的安全性相同?这意味着我是否有要验证的证书?握手是一样的吗? 如果这还不清楚,让我知道我不是这方面的专家。 感谢您以后的回复

  • 我正在搜索半径3公里内的用户,基于用户的长/拉特。我正在比较auth long/lat和附近的用户long/lat。它返回具有距离的用户集合。 现在我很难按距离排序。 如果我添加orderBy('距离','desc')当然会导致一个错误,因为我的DB上没有距离列。 这是一种排序和分页的方法。

  • 我正在开发一个多租户反应式应用程序,使用带有r2dbc驱动程序的Spring-Webflow Spring-data-r2dbc连接到Postgresql数据库。多租户部分是基于模式的:每个租户一个模式。因此,根据上下文(例如登录的用户),请求将访问数据库的特定模式。 我正在努力研究如何在r2dbc中实现这一点。理想情况下,这将是Hibernate处理MultiTenantConnectionPr

  • 我想在Spring WebClient请求链接中发送链接请求参数。例如: https://www.test.com/notification?con=41280440000097 我尝试了以下代码: 但是当我试图设置映射时,我在标记