我目前正在构建一个访问数据库的restful API(带有Spring Boot)。此应用程序最终将托管在服务器上。
我想做的事情:
如何配置上述应用程序?
到目前为止,我找到的答案涉及到配置多个数据源,但是对于上面的应用程序,只有一个数据源,但是有多个用户。
我已经阅读了以下链接,但仍在努力理解它
https://kimrudolph.de/blog/spring-datasource-routing
我是否使用相同的URL(在本例中为jdbcURL)配置多个数据源,并为每个角色配置多组用户名和密码?
谢谢你!
您已经找到了完成该任务的最佳方法,我的意思是AbstractRoutingDataSource
。如果用户数量固定,则可以使用以下方法:
public final class RoutingDataSource extends AbstractRoutingDataSource {
@Override
protected Object determineCurrentLookupKey() {
return UserContextHolder.getUserName() + "DataSource";
}
}
和配置:
@Bean
@Qualifier("user1DataSource")
public DataSource userOneDataSource() {
return DataSourceBuilder.create()
.username("user1")
.password("pass")
...
.build();
}
@Bean
@Qualifier("user2DataSource")
public DataSource userOneDataSource() {
return DataSourceBuilder.create()
.username("user2")
...
.build();
}
@Bean
@Primary
public RoutingDataSource dataSource(Map<String, DataSource> datasources) {
return new RoutingDataSource().dataSource(datasources);
}
如果您需要在运行时添加用户和数据源,您可以使用如下内容:
public final class RoutingDataSource extends AbstractRoutingDataSource {
private final ConcurrentHashMap<String, DataSource> dynamicDataSources = new ConcurrentHashMap<>();
@Override
protected Object determineCurrentLookupKey() {
return UserContextHolder.getUserName() + "_datasource";
}
@Override
protected DataSource determineTargetDataSource() {
String currentLookupKey = this.determineCurrentLookupKey().toString();
String userName = UserContextHolder.getUserName();
String password = UserContextHolder.getPassword();
return this.dynamicDataSources.computeIfAbsent(currentLookupKey, (key) -> DataSourceBuilder.create()
.driverClassName("your.driver.class")
.url("jdbc:same:url/here")
.username(userName)
.password(password)
.build());
}
}
问题内容: 有人知道如何在hibernate配置中添加另一个数据源,以及如何在自己的DAO中将Spring配置为其自动注入该数据源吗? 这是我的带有一个数据源的代码,可以完美运行,但是我不知道如何添加另一个数据源。我想添加另一个数据源,该数据源是具有与实际数据库不同的表的数据库。 DAO EXAMPLE 问题答案: 我假定你有一组应使用的DAO的和适当的,而其他人应该使用不同的和基于。当然,你需要
问题内容: database.php : 问题是我只能在配置中定义one ,default或stats。我遵循了CodeIgniter文档,并添加了以下内容: 这样,我连接到第二个数据库,但是失去了与第一个数据库的连接。有谁对如何加载两个数据库有任何想法,而不必在所有模型构造函数中执行以下操作? 问候, 佩德罗 问题答案: 除了应用Camacho提到的hack之外,您还可以将database.ph
这篇主题描述Django 对多个数据库的支持。大部分Django 文档假设你只和一个数据库打交道。如果你想与多个数据库打交道,你将需要一些额外的步骤。 定义你的数据库 在Django中使用多个数据库的第一步是告诉Django 你将要使用的数据库服务器。这通过使用DATABASES 设置完成。该设置映射数据库别名到一个数据库连接设置的字典,这是整个Django 中引用一个数据库的方式。字典中的设置在
问题内容: 所有,我必须创建一个具有基本架构的数据库。该数据库将很大(超过100GB),并将用作数据仓库。现在,该数据库的创建当前正在通过C#代码“一次命中”执行。从许多不同的来源中提取数据。由于数据量巨大,这种创建引起了一些问题。已经决定,与其一口气创建一个数据库,不如一次创建一个数据库。到 创建几个包含核心数据表的较小数据库。 将较小的数据库合并为一个较大的数据库。 建立架构/添加相关约束。
问题内容: 我有三个表:,,和。 该表包含类别的名称和其类别的ID 。 在包含两列:为这篇文章的ID和该职位的类别的ID。 该表包含有关后多列-如,等 我在网址中有一个名为parent_id的变量,它对应于一个类别。我想列出所有属于parent_id值类别的帖子(而不是类别)。 例如,假设parent_id值为5。每个帖子可能属于ID为20的类别,但该类别属于父类别(其ID为5)。我想列出所有属于
从bugu-mongo 2.11版本开始,支持连接到多个数据库。 在前面的示例代码中,我们都只是连接到一个数据库: //默认的数据库连接 BuguConnection conn = BuguFramework.getInstance().createConnection(); conn.setHost("192.168.0.100"); conn.setPort(27017); conn.setU