1 回答
TA贡献1828条经验 获得超3个赞
事实证明这非常简单:只需更改返回 Spring 表达式 (SpEL)的ArangoConfiguration database()方法:@Override
@Override
public String database() {
return "#{tenantProvider.getDatabaseName()}";
}
在这个例子中引用了一个TenantProvider @Component可以像这样实现的:
@Component
public class TenantProvider {
private final ThreadLocal<String> databaseName;
public TenantProvider() {
super();
databaseName = new ThreadLocal<>();
}
public String getDatabaseName() {
return databaseName.get();
}
public void setDatabaseName(final String databaseName) {
this.databaseName.set(databaseName);
}
}
然后,该组件可以@Autowired位于代码中的任何位置以设置数据库名称,例如在 servlet 过滤器中,或者在我的例子中,在 Apache Camel 路由处理器和数据库服务方法中。
Ps 我通过阅读ArangoTemplate代码和Spring Expression 支持文档部分 (通过)以及一个合并的拉取请求意识到了这种可能性。
添加回答
举报