All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.hutool.db.nosql.mongo.MongoFactory Maven / Gradle / Ivy

Go to download

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

There is a newer version: 5.8.34
Show newest version
package cn.hutool.db.nosql.mongo;

import cn.hutool.core.map.MapUtil;
import cn.hutool.core.map.SafeConcurrentHashMap;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.RuntimeUtil;
import cn.hutool.setting.Setting;

import java.util.Collection;
import java.util.Map;

/**
 * {@link MongoDS}工厂类,用于创建
 *
 * @author Looly, VampireAchao
 */
public class MongoFactory {

	/**
	 * 各分组做组合key的时候分隔符
	 */
	private final static String GROUP_SEPRATER = ",";

	/**
	 * 数据源池
	 */
	private static final Map DS_MAP = new SafeConcurrentHashMap<>();

	// JVM关闭前关闭MongoDB连接
	static {
		RuntimeUtil.addShutdownHook(MongoFactory::closeAll);
	}

	// ------------------------------------------------------------------------ Get DS start

	/**
	 * 获取MongoDB数据源
* * @param host 主机 * @param port 端口 * @return MongoDB连接 */ public static MongoDS getDS(String host, int port) { final String key = host + ":" + port; return DS_MAP.computeIfAbsent(key, (k)->new MongoDS(host, port)); } /** * 获取MongoDB数据源
* 多个分组名对应的连接组成集群 * * @param groups 分组列表 * @return MongoDB连接 */ public static MongoDS getDS(String... groups) { final String key = ArrayUtil.join(groups, GROUP_SEPRATER); MongoDS ds = DS_MAP.get(key); if (null == ds) { // 没有在池中加入之 ds = new MongoDS(groups); DS_MAP.put(key, ds); } return ds; } /** * 获取MongoDB数据源
* * @param groups 分组列表 * @return MongoDB连接 */ public static MongoDS getDS(Collection groups) { return getDS(groups.toArray(new String[0])); } /** * 获取MongoDB数据源
* * @param setting 设定文件 * @param groups 分组列表 * @return MongoDB连接 */ public static MongoDS getDS(Setting setting, String... groups) { final String key = setting.getSettingPath() + GROUP_SEPRATER + ArrayUtil.join(groups, GROUP_SEPRATER); MongoDS ds = DS_MAP.get(key); if (null == ds) { // 没有在池中加入之 ds = new MongoDS(setting, groups); DS_MAP.put(key, ds); } return ds; } /** * 获取MongoDB数据源
* * @param setting 配置文件 * @param groups 分组列表 * @return MongoDB连接 */ public static MongoDS getDS(Setting setting, Collection groups) { return getDS(setting, groups.toArray(new String[0])); } // ------------------------------------------------------------------------ Get DS ends /** * 关闭全部连接 */ public static void closeAll() { if (MapUtil.isNotEmpty(DS_MAP)) { for (MongoDS ds : DS_MAP.values()) { ds.close(); } DS_MAP.clear(); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy