rda*_*ski 5 java datasource jdbc spring-boot
我有一个关于如何在Spring Boot应用程序中处理两个不同数据源的问题。
用例:
我有一个必须一直连接的主存储库(db)(应用程序范围),对此我没有问题,拥有TransactionManager和EntityManager。
第二个数据库连接应仅在请求范围内进行,并具有从httpRequest收集的动态凭据。
数据源均来自PostgreSQL。
那有可能吗?如果是,实现此目标的最佳方法是什么。
感谢帮助。
这是两个数据源模式的一个有趣的转变!
您的第二个数据源必须根据应用程序外部的信息进行解析,因此您将无法使用 Spring 应用程序上下文。
您可以在 Spring 中以编程方式配置数据源,本问答中对此进行了介绍:
在 Spring Boot 中以编程方式配置 DataSource
您的情况略有不同,因为凭据将在运行时解析,但可以使用相同的想法。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
public DataSource getDataSource(String user, String password) {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.url(DBB_URL);
dataSourceBuilder.username(user);
dataSourceBuilder.password(password);
return dataSourceBuilder.build();
}
Run Code Online (Sandbox Code Playgroud)
然后将其用作代码的数据源。您将无法自动装配它,因此您将提出一个合理的策略,决定何时在 JDBC 方法中构建数据源,并将其与 Spring JdbcTemplate 一起使用,以允许您实现所需的事务完整性为了。
还有您未指定的其他注意事项。此策略假设您对两个数据源使用相同的 JDBC 驱动程序。如果您使用不同的数据库,则必须添加这些库的依赖项,然后为动态数据源指定驱动程序类。
归档时间: |
|
查看次数: |
5863 次 |
最近记录: |