앞서 포스팅을 통해 MongoDB instance를 실행시키고 Transaction을 위한 Replica Set 설정을 마쳤다면,
이제 Spring Boot application과 MongoDB를 연동하기 위해 필요한 설정을 진행하도록 해보자.
(관련 코드는 여기에서 확인 가능하다)
application.yml
먼저 application.yml 설정을 하자.
MongoDB에 접속할 수 있는 MongoDB instance 정보와 접속 설정을 위한 spring.data.mongodb.uri 와
Spring Data MongoDB의 debug log를 확인하기 위한 logging.level 설정을 추가한다.
spring:
data:
mongodb:
uri: mongodb://127.0.0.1:27017/playground?replicaSet=rs&readPreference=secondaryPreferred&minpoolsize=5&maxpoolsize=5
logging:
level:
org.springframework.data.mongodb: DEBUG
참고로 MongoDB 설정 관련 uri에 대한 자세한 정보는 com.mongodb.ConnectionString클래스를 살펴보는 것을 추천한다.
MongoDbConfiguration
다음은 코드를 통해 설정을 해보자.
커넥션 관련된 거의 모든 설정은 application.yml에 spring.data.mongodb.uri에 포함되고
Spring Data MongoDB 내부적으로 처리해주기 때문에 매우 간단하다.
import org.springframework.boot.autoconfigure.mongo.MongoProperties
import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.data.mongodb.MongoDatabaseFactory
import org.springframework.data.mongodb.MongoTransactionManager
import org.springframework.data.mongodb.config.EnableMongoAuditing
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory
@Configuration
@EnableMongoAuditing
class MongoDbConfiguration {
@Bean
@ConfigurationProperties("spring.data.mongodb")
fun properties(): MongoProperties {
return MongoProperties()
}
@Bean
fun mongoClientDatabaseFactory(properties: MongoProperties): SimpleMongoClientDatabaseFactory {
return SimpleMongoClientDatabaseFactory(properties.uri)
}
@Bean
fun transactionManager(databaseFactory: MongoDatabaseFactory): MongoTransactionManager {
return MongoTransactionManager(databaseFactory)
}
}
여기서 중요한 것은 MongoTransactionManager 인데 따로 MongoTransactionManager를 Bean으로 등록하지 않으면 @Transactional을 통한 transaction이 적용되지 않는다.
(Reactive Mongo 설정은 여기를 참고)
Application 실행
위와 같이 설정한 후 Spring Boot Application을 실행하면 아래와 같이 MongoDB와 연동이 잘 되는 것을 확인할 수 있다.
'Java & Kotlin > Spring' 카테고리의 다른 글
Start Spring Data MongoDB - 5. Integration Test (0) | 2021.09.04 |
---|---|
Start Spring Data MongoDB - 4. Application 코드 작성 (0) | 2021.09.04 |
Start Spring Data MongoDB - 2. MongoDB Single node replica set 설정 (0) | 2021.08.30 |
Start Spring Data MongoDB - 1. 개요 및 프로젝트 생성 (0) | 2021.08.30 |
Spring Security 인증 기본 구조 (0) | 2021.07.18 |
댓글