From 9482561906179371df7d0122a2d7f985426b6b08 Mon Sep 17 00:00:00 2001 From: jmal Date: Tue, 19 Mar 2024 18:23:02 +0800 Subject: [PATCH] chore: update mongodb uri config --- .../clouddisk/config/MongoClientConfig.java | 50 ++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/jmal/clouddisk/config/MongoClientConfig.java b/src/main/java/com/jmal/clouddisk/config/MongoClientConfig.java index c297c4fa..1f4c0fd6 100644 --- a/src/main/java/com/jmal/clouddisk/config/MongoClientConfig.java +++ b/src/main/java/com/jmal/clouddisk/config/MongoClientConfig.java @@ -1,16 +1,41 @@ package com.jmal.clouddisk.config; +import cn.hutool.core.util.StrUtil; +import com.mongodb.MongoClientSettings; +import com.mongodb.ServerAddress; +import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; +import java.net.URI; + +import static java.util.Collections.singletonList; + @Configuration +@Slf4j public class MongoClientConfig extends AbstractMongoClientConfiguration { + @Autowired + Environment env; + @NotNull @Override protected String getDatabaseName() { - return "jmalcloud"; + String name = "jmalcloud"; + String mongoURI = env.getProperty("spring.data.mongodb.uri"); + if (StrUtil.isBlank(mongoURI)) { + return name; + } + try { + URI uri = new URI(mongoURI); + return uri.getPath().substring(1); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + return name; } @Override @@ -18,4 +43,27 @@ public boolean autoIndexCreation() { return true; } + @Override + protected void configureClientSettings(@NotNull MongoClientSettings.Builder builder) { + + String host = "mongo"; + String port = "27017"; + String mongoURI = env.getProperty("spring.data.mongodb.uri"); + if (StrUtil.isNotBlank(mongoURI)) { + try { + URI uri = new URI(mongoURI); + host = uri.getHost(); + port = String.valueOf(uri.getPort()); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + + String finalPort = port; + String finalHost = host; + builder.applyToClusterSettings(settings -> { + settings.hosts(singletonList( + new ServerAddress(finalHost, Integer.parseInt(finalPort)))); + }); + } }