mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-06 08:38:26 +08:00
多个环境,每个环境加载相同 Mapper (例如 RowMapper)会导致环境冲突。
创建多个环境,每个环境加载相同 Mapper (例如 RowMapper)会导致环境冲突。 代码: // 环境实例1 MybatisFlexBootstrap client1 = ...; client1.addMapper(RowMapper.class); // 环境实例2: MybatisFlexBootstrap client2 = // ; client2.addMapper(RowMapper.class); client1.getMapper(RowMapper.class); // client2 拿到的永远都是 client1 的 RowMapper client2.getMapper(RowMapper.class);
This commit is contained in:
parent
c969ee388d
commit
cc374a6aa2
@ -28,7 +28,6 @@ import com.mybatisflex.core.util.MapUtil;
|
||||
import java.lang.reflect.InvocationHandler;
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Proxy;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@ -80,7 +79,7 @@ public class Mappers {
|
||||
* @return {@link BaseMapper} 对象
|
||||
*/
|
||||
public static <M> M ofMapperClass(Class<M> mapperClass) {
|
||||
Map<Class<?>, Object> mapperObjects = MapUtil.computeIfAbsent(MAPPER_OBJECTS_OF_ENV, "default", envId -> new HashMap<>());
|
||||
Map<Class<?>, Object> mapperObjects = MapUtil.computeIfAbsent(MAPPER_OBJECTS_OF_ENV, "default", envId -> new ConcurrentHashMap<>());
|
||||
Object mapperObject = MapUtil.computeIfAbsent(mapperObjects, mapperClass, clazz ->
|
||||
Proxy.newProxyInstance(mapperClass.getClassLoader()
|
||||
, new Class[]{mapperClass}
|
||||
@ -88,7 +87,7 @@ public class Mappers {
|
||||
return (M) mapperObject;
|
||||
}
|
||||
public static <M> M ofMapperClass(String environmentId, Class<M> mapperClass) {
|
||||
Map<Class<?>, Object> mapperObjects = MapUtil.computeIfAbsent(MAPPER_OBJECTS_OF_ENV, environmentId, envId -> new HashMap<>());
|
||||
Map<Class<?>, Object> mapperObjects = MapUtil.computeIfAbsent(MAPPER_OBJECTS_OF_ENV, environmentId, envId -> new ConcurrentHashMap<>());
|
||||
Object mapperObject = MapUtil.computeIfAbsent(mapperObjects, mapperClass, clazz ->
|
||||
Proxy.newProxyInstance(mapperClass.getClassLoader()
|
||||
, new Class[]{mapperClass}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user