[Spring/Mongo] 기본 설정하기

민찬기·2023년 3월 19일
0

Spring & MongoDB

목록 보기
1/4
post-thumbnail

최근 취뽀에 성공하면서 Kotlin과 MongoDB를 새로이 공부하게 되었습니다.

기존에는 JAVA + Spring + JPA + RDB 조합을 활용했는데, 이제는 Kotlin + Spring + MongoDB를 사용하게 되면서 많은 시행착오를 겪게 되었습니다.

아직 현재 진행형인 삽질이지만, 같은 실수를 반복하지 않기 위해 정리를 해보고자 합니다.


MongoDB Setup

⭐️ MongoDB 생성

MongoDB는 무료로 사용해볼 수 있습니다. 몽고디비 홈페이지에서 간단하게 로그인을 진행하고 Build a Database 버튼을 통해 진행할 수 있습니다.

이후 무료 버전인 M0를 선택하고, AWS를 선택한 뒤, 한국 리전을 선택하고 Create 버튼을 눌러 진행합니다.

AWS 뿐만 아니라 GCP도 한국 리전을 지원합니다. 이 글을 작성하는 시점에서는 Azure에서 한국 리전을 지원하지 않고 있습니다. 리전으로 인한 차이가 얼마나 있을 지는 잘 모르겠네요.

이후 Security Quickstart에서 두 가지를 설정해야 합니다. (1) username과 password를 설정해야 하고, (2) 연결 가능한 IP 주소를 등록해야 합니다. 연결 가능한 IP 주소는 추후에 추가 또는 삭제가 가능합니다.

설정을 모두 마친 후, Finish and Close 버튼을 누르면 위와 같은 창이 나옵니다. Cluster의 상단 메뉴에 Connect 버튼을 누르면 해당 DB에 대한 연결정보를 얻을 수 있습니다. 언어와 버전을 선택하면 연결에 사용할 수 있는 connection string 정보를 줍니다.

mongodb+srv://<username>:<password>@<cluster-name>.<uri>/?retryWrites=true&w=majority


⭐️ Spring에서 MongoDB 연결 정보 등록

Spring에서 MongoDB에 관한 설정 방법은 크게 두 가지가 있습니다.

1. application.yml (properties)

다른 DB를 연결할 때와 마찬가지로, application.yml이나 application.properties에서 설정을 진행할 수 있습니다.

spring:
  data:
    mongodb:
      uri: mongodb+srv://<username>:<password>@<cluster-name>.<uri>/?retryWrites=true&w=majority
      database: 

2. MongoClient

Spring에서는 AbstractMongoClientConfiguration을 상속받는 객체를 통해 연결 정보를 설정할 수 있습니다.

@Configuration
class MongoConfig : AbstractMongoClientConfiguration() {

	override fun getDatabaseName(): String {
		return "<database-name>"
	}

	override fun mongoClient(): MongoClient {
		val connectionString = ConnectionString("mongodb+srv://<username>:<password>@<cluster-name>.<uri>")
		val mongoClientSettings = MongoClientSettings.builder().applyConnectionString(connectionString).build()

		return MongoClients.create(mongoClientSettings)
	}
}

AbstractMongoClientConfiguration을 상속받아서 Configuration을 만들면 기본 연결 이외에도 많은 설정을 진행할 수 있습니다.

가령 Spring Mongo Data에서는 @Transactional을 지원하지 않기 때문에, 이와 관련한 TransactionManager를 만들 수 있습니다.

물론 기본 연결 정보는 yml이나 properties에 두고, 세부적인 항목들만 별도로 Configuration으로 등록할 수도 있습니다.


오늘은 기본적인 MongoDB 생성 및 연결에 대해 작성해보았습니다. 다음에는 MongoDB에 기본적인 저장 및 조회를 진행해보도록 하겠습니다.

profile
https://github.com/devmizz

0개의 댓글