Spring Boot MongoDB 설정하기

build.gradle 에 dependency 추가

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-webflux'
    implementation  group: 'org.springframework.boot', name: 'spring-boot-starter-data-mongodb-reactive', version: '2.5.1'
    compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.20'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'io.projectreactor:reactor-test'
    testImplementation group: 'junit', name: 'junit', version: '4.13.2'
}

여기서 주의해야 할 것은 'spring-boot-starter-data-mongodb' 를 사용하면 안된다는 것이다.

mongodb만 사용하게 되면 'MongoRepository' 만 인식하게 된다.

꼭, spring-boot-starter-data-mongodb-reactive 를 사용해야 한다.

그래야 reactive 까지 인식 가능하다.

 

Repository 추가

package com.example.demo22.repository;

import com.example.demo22.documents.Item;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.ReactiveMongoRepository;

public interface ItemReactiveRepository extends MongoRepository<Item, String> {


}

extends를 통해서 MongoRepository 또는 ReactiveMongoRepository를 추가해 줘야 한다.

이걸 추가 하게 되면 Spring 에서는 Repository를 lookup 하게 된다.

로그를 보면 조금 더 이해가 쉽다.

2021-06-22 18:52:15.995  INFO 11684 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 175 ms. Found 1 MongoDB repository interfaces.
2021-06-22 18:52:16.045  INFO 11684 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Reactive MongoDB repositories in DEFAULT mode.
2021-06-22 18:52:16.050  INFO 11684 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 5 ms. Found 0 Reactive MongoDB repository interfaces.

2번의 Repository Interfaces를 Scanning하는데,

한번은 MongoRepository를 Scanning하고, 

Found 1 MongoDB repository inte

한번은 ReactiveRepository를 Scanning 한다.

Reactive MongoDB repository interfaces.

 

만약에 Scanning이 되지 않는다면

@SpringBootApplication

이 있는 Class에 '@EnableMongoRepositories' 를 추가 하면 된다.

package com.example.demo22;

import com.example.demo22.repository.ItemReactiveRepository;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;

@SpringBootApplication
@EnableMongoRepositories
public class Demo22Application {

    public static void main(String[] args) {
        SpringApplication.run(Demo22Application.class, args);
    }

}

 

물론 starter Dependency를 입력하는 것 만으로도 해당 Annotation은 자동으로 붙어서 작동하는 것이 맞음으로 이와 같은 설정은 하지 않아도 작동 되어야 한다.

Properties 설정

마지막으로 Mongo DB 접속 정보를 지정해 줘야 한다.

로컬 기준으로 application.properties에 아래와 같이 설정해 주면 된다.

spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=local

 

728x90
반응형