<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.core.convert.converter.Converter;
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.core.convert.DefaultDbRefResolver;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.convert.MongoCustomConversions;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
@Configuration
public class DbMongoConf {
@Bean("mongoClient")
public MongoClient mongoClient(@Qualifier("mongoConnectionString") String mongoConnectionString) {
return MongoClients.create(mongoConnectionString);
}
@Profile({"LOCAL","DEV"})
@Bean("mongoConnectionString")
public String mongoConnectionStringStg() {
return "mongodb://계정:비번@123.123.123.123:12345/myservice";
}
@Profile({"PROD"})
@Bean("mongoConnectionString")
public String mongoConnectionStringProd() {
return "mongodb://계정:비번@123.123.123.123:12345/myservice";
}
// https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/
// 7.4.1. Auto Index Creation
@Bean
public MongoTemplate mongoTemplate(
@Qualifier("mongoClient") MongoClient mongoClient
,@Qualifier("mongoConnectionString") String mongoConnectionString
,@Qualifier("customConversions") MongoCustomConversions customConversions
) {
MongoDatabaseFactory dbFactory = new SimpleMongoClientDatabaseFactory(mongoConnectionString);
DefaultDbRefResolver dbRefResolver = new DefaultDbRefResolver(dbFactory);
MongoMappingContext mappingContext = new MongoMappingContext();
mappingContext.setAutoIndexCreation(true);
mappingContext.afterPropertiesSet();
MappingMongoConverter mongoConverter = new MappingMongoConverter(dbRefResolver, mappingContext);
mongoConverter.setMapKeyDotReplacement("#");
mongoConverter.afterPropertiesSet();
mongoConverter.setCustomConversions(customConversions);
MongoTemplate mongoTemplate = new MongoTemplate(dbFactory,mongoConverter);
return mongoTemplate;
}
@Bean
public MongoCustomConversions customConversions() {
List<Converter<?, ?>> converterList = new ArrayList<Converter<?, ?>>();
converterList.add(new MongoLocalDateTimeFromStringConverter());
return new MongoCustomConversions(converterList);
}
private static final class MongoLocalDateTimeFromStringConverter implements Converter<String, LocalDateTime> {
@Override
public LocalDateTime convert(String source) {
return source == null ? null : LocalDateTime.parse(source);
}
}
'프로그램 > Java' 카테고리의 다른 글
java enum tree (0) | 2021.05.14 |
---|---|
spring boot mongo query (0) | 2021.05.14 |
좌표계 변환 (0) | 2021.05.14 |
jar/war 파일을 직접 실행할 수 있게 만드는 옵션 (0) | 2021.05.14 |
Using the MariaDB JDBC driver with Amazon Aurora with MySQL compatibility (0) | 2021.05.14 |