1 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
事實(shí)證明這非常簡(jiǎn)單:只需更改返回 Spring 表達(dá)式 (SpEL)的ArangoConfiguration database()方法:@Override
@Override
public String database() {
return "#{tenantProvider.getDatabaseName()}";
}
在這個(gè)例子中引用了一個(gè)TenantProvider @Component可以像這樣實(shí)現(xiàn)的:
@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位于代碼中的任何位置以設(shè)置數(shù)據(jù)庫(kù)名稱,例如在 servlet 過(guò)濾器中,或者在我的例子中,在 Apache Camel 路由處理器和數(shù)據(jù)庫(kù)服務(wù)方法中。
Ps 我通過(guò)閱讀ArangoTemplate代碼和Spring Expression 支持文檔部分 (通過(guò))以及一個(gè)合并的拉取請(qǐng)求意識(shí)到了這種可能性。
添加回答
舉報(bào)