fix lock bug

This commit is contained in:
Looly 2019-09-19 10:22:55 +08:00
parent 04830bf06b
commit 010f0554ae
3 changed files with 17 additions and 15 deletions

View File

@ -14,6 +14,7 @@
* 【core】 修复DateUtil.offset导致的时区错误问题issue#I1294O@Gitee * 【core】 修复DateUtil.offset导致的时区错误问题issue#I1294O@Gitee
* 【core】 修复RuntimeUtil.exec重载导致的问题issue#544@Github * 【core】 修复RuntimeUtil.exec重载导致的问题issue#544@Github
* 【db】 修复StatementUtil.getGeneratedKeys返回主键数量不足问题 * 【db】 修复StatementUtil.getGeneratedKeys返回主键数量不足问题
* 【db】 修复锁的问题issue#546@Github
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------

View File

@ -75,7 +75,7 @@ public class ConverterRegistry implements Serializable{
/** 默认类型转换器 */ /** 默认类型转换器 */
private Map<Type, Converter<?>> defaultConverterMap; private Map<Type, Converter<?>> defaultConverterMap;
/** 用户自定义类型转换器 */ /** 用户自定义类型转换器 */
private Map<Type, Converter<?>> customConverterMap; private volatile Map<Type, Converter<?>> customConverterMap;
/** 类级的内部类,也就是静态的成员式内部类,该内部类的实例与外部类的实例 没有绑定关系,而且只有被调用到才会装载,从而实现了延迟加载 */ /** 类级的内部类,也就是静态的成员式内部类,该内部类的实例与外部类的实例 没有绑定关系,而且只有被调用到才会装载,从而实现了延迟加载 */
private static class SingletonHolder { private static class SingletonHolder {

View File

@ -8,7 +8,6 @@ import cn.hutool.log.StaticLog;
* *
* @author looly * @author looly
* @since 4.0.2 * @since 4.0.2
*
*/ */
public class GlobalDSFactory { public class GlobalDSFactory {
@ -63,7 +62,8 @@ public class GlobalDSFactory {
* @param customDSFactory 自定义数据源工厂 * @param customDSFactory 自定义数据源工厂
* @return 自定义的数据源工厂 * @return 自定义的数据源工厂
*/ */
synchronized public static DSFactory set(DSFactory customDSFactory) { public static DSFactory set(DSFactory customDSFactory) {
synchronized (lock) {
if (null != factory) { if (null != factory) {
if (factory.equals(customDSFactory)) { if (factory.equals(customDSFactory)) {
return factory;// 数据源工厂不变时返回原数据源工厂 return factory;// 数据源工厂不变时返回原数据源工厂
@ -72,8 +72,9 @@ public class GlobalDSFactory {
factory.destroy(); factory.destroy();
} }
StaticLog.debug("Custom use [{}] datasource.", customDSFactory.dataSourceName); StaticLog.debug("Custom use [{}] DataSource.", customDSFactory.dataSourceName);
factory = customDSFactory; factory = customDSFactory;
}
return factory; return factory;
} }
} }