profile
viewpoint

Ask questions多租户场景 是通过filter手动设置DynamicDataSourceContextHolder 的.如果在service层开一个新的线程. 子线程再操作数据库就无法切换数据源.

Enviroment

macos

JDK Version(required): jdk1.8

SpringBoot Version(required): 1.5.x

Starter Version(required): 3.0.1

Describe

多租户场景 是通过filter手动设置DynamicDataSourceContextHolder 的.如果在service层开一个新的线程. 子线程再操作数据库就无法切换数据源. 是不是可以使用NamedInheritableThreadLocal 会更好

private static final ThreadLocal<Deque<String>> LOOKUP_KEY_HOLDER = new NamedInheritableThreadLocal("dynamicDs") {
    @Override
    protected Object initialValue() {
      return new ArrayDeque();
    }
  };

Expected Result: 子线程可以继承父线程的数据源标识

Actual Result:
为peek为null

Steps to reproduce

  • Step 1 image

  • Step 2 image

  • Step 3

image

baomidou/dynamic-datasource-spring-boot-starter

Answer questions 0532

下个版本 @huayanYu hello 这个有开发计划吗 , 或者有开发的分支了吗 ,我们也想用一下这个功能,可以和你一起测一下

useful!

Related questions

DS注解在Mapper上无效 hot 1
dynamicRoutingDataSource hot 1
dynamicRoutingDataSource hot 1
多数据源启动报错 hot 1
source:https://uonfu.com/
Github User Rank List