[英]Dynamic datasource as second datasource in Spring Boot + Hibernate
我有一个关于如何在Spring Boot应用程序中处理两个不同数据源的问题。
使用案例:
我有一个主存储库(db)必须一直连接(应用程序范围),我没有问题,有TransactionManager和EntityManager。
第二个数据库连接应该只是请求作用域,使用从httpRequest收集的动态凭据。
数据源都来自PostgreSQL。
这甚至可能吗? 如果是,那么实现这一目标的最佳方式是什么。
感谢帮助。
这是两个数据源模式的有趣转折!
您的第二个数据源必须根据应用程序外部的信息进行解析,因此您将无法使用Spring应用程序上下文。
您可以在Spring中以编程方式配置数据源,本Q&A中对此进行了介绍:
在Spring Boot中以编程方式配置DataSource
您的情况稍有不同,因为凭据将在运行时解析,但可以使用相同的想法。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
public DataSource getDataSource(String user, String password) {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.url(DBB_URL);
dataSourceBuilder.username(user);
dataSourceBuilder.password(password);
return dataSourceBuilder.build();
}
然后将其用作代码的数据源。 您将无法对其进行自动装配,因此您将提出一种合理的策略,以便何时在JDBC方法中构建数据源,并将其与Spring JdbcTemplate一起使用,从而实现您正在寻找的事务完整性对于。
您还没有指定其他注意事项。 此策略假定您对两个数据源使用相同的JDBC驱动程序。 如果使用的是不同的数据库,则必须为这些库添加依赖项,然后为动态数据源指定驱动程序类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.