diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/lang/Singleton.java b/hutool-core/src/main/java/org/dromara/hutool/core/lang/Singleton.java index f4edb246b..6dac5ce97 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/lang/Singleton.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/lang/Singleton.java @@ -12,12 +12,11 @@ package org.dromara.hutool.core.lang; -import org.dromara.hutool.core.classloader.ClassLoaderUtil; +import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.func.SerSupplier; import org.dromara.hutool.core.map.SafeConcurrentHashMap; import org.dromara.hutool.core.reflect.ConstructorUtil; import org.dromara.hutool.core.text.StrUtil; -import org.dromara.hutool.core.array.ArrayUtil; import java.util.Set; import java.util.stream.Collectors; @@ -66,21 +65,6 @@ public final class Singleton { return (T) POOL.computeIfAbsent(key, (k)-> supplier.get()); } - /** - * 获得指定类的单例对象
- * 对象存在于池中返回,否则创建,每次调用此方法获得的对象为同一个对象
- * - * @param 单例对象类型 - * @param className 类名 - * @param params 构造参数 - * @return 单例对象 - */ - public static T get(final String className, final Object... params) { - Assert.notBlank(className, "Class name must be not blank !"); - final Class clazz = ClassLoaderUtil.loadClass(className); - return get(clazz, params); - } - /** * 将已有对象放入单例中,其Class做为键 * diff --git a/hutool-db/src/test/java/org/dromara/hutool/db/GlobalDbConfigTest.java b/hutool-db/src/test/java/org/dromara/hutool/db/GlobalDbConfigTest.java new file mode 100644 index 000000000..907048e16 --- /dev/null +++ b/hutool-db/src/test/java/org/dromara/hutool/db/GlobalDbConfigTest.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package org.dromara.hutool.db; + +import org.dromara.hutool.setting.Setting; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class GlobalDbConfigTest { + @Test + void loadSettingTest() { + final Setting dbSetting = GlobalDbConfig.createDbSetting(); + Assertions.assertNotNull(dbSetting); + } +} diff --git a/hutool-db/src/test/java/org/dromara/hutool/db/IssueI73770Test.java b/hutool-db/src/test/java/org/dromara/hutool/db/IssueI73770Test.java new file mode 100644 index 000000000..b20b739b6 --- /dev/null +++ b/hutool-db/src/test/java/org/dromara/hutool/db/IssueI73770Test.java @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package org.dromara.hutool.db; + +import org.dromara.hutool.db.ds.DSUtil; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +public class IssueI73770Test { + + @Test + @Disabled + void pageTest() { + DSUtil.getDS("mysql"); + } +} diff --git a/hutool-log/src/main/java/org/dromara/hutool/log/LogFactory.java b/hutool-log/src/main/java/org/dromara/hutool/log/LogFactory.java index 934eb2acd..f0ca07624 100644 --- a/hutool-log/src/main/java/org/dromara/hutool/log/LogFactory.java +++ b/hutool-log/src/main/java/org/dromara/hutool/log/LogFactory.java @@ -12,7 +12,6 @@ package org.dromara.hutool.log; -import org.dromara.hutool.core.lang.Singleton; import org.dromara.hutool.log.engine.LogEngineFactory; /** @@ -29,7 +28,7 @@ public abstract class LogFactory { * @return 日志对象 */ public static Log getLog(final String name) { - return Singleton.get(name, () -> LogEngineFactory.getEngine().createLog(name)); + return LogEngineFactory.getEngine().getLog(name); } /** @@ -39,6 +38,6 @@ public abstract class LogFactory { * @return 日志对象 */ public static Log getLog(final Class clazz) { - return Singleton.get(clazz.getName(), () -> LogEngineFactory.getEngine().createLog(clazz)); + return LogEngineFactory.getEngine().getLog(clazz); } } diff --git a/hutool-log/src/main/java/org/dromara/hutool/log/engine/LogEngine.java b/hutool-log/src/main/java/org/dromara/hutool/log/engine/LogEngine.java index 4ab93c343..2dcaffb9e 100755 --- a/hutool-log/src/main/java/org/dromara/hutool/log/engine/LogEngine.java +++ b/hutool-log/src/main/java/org/dromara/hutool/log/engine/LogEngine.java @@ -12,6 +12,7 @@ package org.dromara.hutool.log.engine; +import org.dromara.hutool.core.lang.Singleton; import org.dromara.hutool.log.Log; /** @@ -44,4 +45,26 @@ public interface LogEngine { * @return 日志对象 */ Log createLog(Class clazz); + + /** + * 获得日志对象(单例) + * + * @param name 日志对象名 + * @return 日志对象 + */ + default Log getLog(final String name) { + // 将引擎名称和日期名称关联,以便在引擎更换后重新获取引擎。 + return Singleton.get(getName() + name, () -> createLog(name)); + } + + /** + * 获得日志对象(单例) + * + * @param clazz 日志对应类 + * @return 日志对象 + */ + default Log getLog(final Class clazz) { + // 将引擎名称和日期名称关联,以便在引擎更换后重新获取引擎。 + return Singleton.get(getName() + clazz.getName(), () -> createLog(clazz)); + } } diff --git a/hutool-log/src/test/java/org/dromara/hutool/log/LogTest.java b/hutool-log/src/test/java/org/dromara/hutool/log/LogTest.java index 57c3b5b11..55060d032 100644 --- a/hutool-log/src/test/java/org/dromara/hutool/log/LogTest.java +++ b/hutool-log/src/test/java/org/dromara/hutool/log/LogTest.java @@ -39,4 +39,9 @@ public class LogTest { log.info(null); log.warn(null); } + + @Test + void getLogByClassTest() { + Log.get(LogTest.class); + } } diff --git a/hutool-log/src/test/java/org/dromara/hutool/log/StaticLogTest.java b/hutool-log/src/test/java/org/dromara/hutool/log/StaticLogTest.java new file mode 100644 index 000000000..ac4220b8a --- /dev/null +++ b/hutool-log/src/test/java/org/dromara/hutool/log/StaticLogTest.java @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package org.dromara.hutool.log; + +import org.junit.jupiter.api.Test; + +public class StaticLogTest { + private static final Log log = Log.get(); + + @Test + void infoTest() { + log.info("Static final Logger test"); + } +}