Files
operationSystem-back/src/main/java/com/caliverse/admin/global/configuration/MongoBusinessLogConfig.java
2025-05-01 07:09:05 +09:00

68 lines
3.0 KiB
Java

package com.caliverse.admin.global.configuration;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import com.caliverse.admin.logs.logrepository.mongobusinesslogrepository.MongoBusinessLogRepository;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
@Configuration
@EnableMongoRepositories(basePackageClasses = MongoBusinessLogRepository.class, mongoTemplateRef = "mongoBusinessLogTemplate")
public class MongoBusinessLogConfig {
@Value("${mongodb.host}")
String businessLogHost;
@Value("${mongodb.business-log.username}")
String username;
@Value("${mongodb.business-log.password}")
String password;
@Value("${mongodb.business-log.db}")
String businessLogdb;
@Value("${spring.profiles.active}")
private String activeProfile;
// instance 방식
// @Bean(name = "mongoBusinessLogClient")
// public MongoClient mongoBusinessLogClient() {
// String encodePassword = URLEncoder.encode(password, StandardCharsets.UTF_8);
// String auth = username.isEmpty() ? "" : String.format("%s:%s@",username, encodePassword);
// String connection = String.format("mongodb://%s%s/?authSource=%s", auth, businessLogHost, businessLogdb);
// return MongoClients.create(connection);
// }
@Bean(name = "mongoBusinessLogClient")
public MongoClient mongoBusinessLogClient() {
String encodePassword = URLEncoder.encode(password, StandardCharsets.UTF_8);
String auth = username.isEmpty() ? "" : String.format("%s:%s@",username, encodePassword);
String connection;
if(activeProfile.equals("local") || activeProfile.equals("dev")) {
connection = String.format("mongodb://%s%s/?authSource=%s", auth, businessLogHost, businessLogdb);
}else{
connection = String.format("mongodb+srv://%s%s/%s?retryWrites=true&w=majority&appName=backoffice-%s", auth, businessLogHost, businessLogdb, activeProfile);
}
return MongoClients.create(connection);
}
@Bean(name = "mongoBusinessLogFactory")
public MongoDatabaseFactory mongoBusinessLogFactory(@Qualifier("mongoBusinessLogClient") MongoClient mongoClient) {
return new SimpleMongoClientDatabaseFactory(mongoClient, businessLogdb);
}
@Bean(name = "mongoBusinessLogTemplate")
public MongoTemplate mongoBusinessLogTemplate(@Qualifier("mongoBusinessLogFactory") MongoDatabaseFactory mongoFactory) {
return new MongoTemplate(mongoFactory);
}
}