프로필사진

Go, Vantage point

가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.


Github | https://github.com/overnew/

Blog | https://everenew.tistory.com/





티스토리 뷰

반응형

 

 

공식 문서에도 잘 정리되어 있지만, 초심자 입장에서는 알 수 없는 오류를 많이 만나서 정리해본다.

 

 

다음 공식 문서를 따라 하면 된다.

 

https://spring.io/guides/gs/accessing-data-mongodb/

 

Accessing Data with MongoDB

this guide is designed to get you productive as quickly as possible and using the latest Spring project releases and techniques as recommended by the Spring team

spring.io

 

 

 

일단 몽고 DB를 설치하자.

 

하진쓰님의 게시글을 따라 하면 쉽다. 

본인의 경우에는 6.0 버전을 설치했지만 제대로 설치가 되지 않아 5.0 버전을 설치하였다.

 

 

 

 

몽고 DB가 설치되면 https://start.spring.io/ 로 이동하여 다음 세 가지를 dependencies를 모두 추가하자.

 

Spring Data JPA도 빼먹지 말고 추가하자.

 

 

 

 

 

이제 project를 open 하여 다음 코드들을 추가해보자. (공식 문서 참조했습니다.)

 

 

 

 

 

 

 

MongoRepository<Recipe, String> 를 적용하면 Key가 string인 Recipe 객체에 대해 CRUD 기능을 자동으로 만들어준다.

RecipeRepository는 인터페이스로 선언되어 있지만 스프링 AOP 프록시로 자동으로 구현체가 생성된다.

이 구현체는 컨테이너에도 자동 등록된다.

 

 

 

이제 main 메서드를 실행하면 run()의 코드가 동작한다.

하지만 이를 위해서는 MongoDB를 띄워야 한다.

 

 

 

 

가장 간단한 방법이 MongoDB를 설치했던 MongoDBCompass를 이용하는 것이다.

MongoDBCompass를 실행하면 MongoDB의 기본 port인 27017로 서버를 실행시킬 수 있다.

이때 스프링의 DataSource가 DB와 연결하기 위한 데이터를 application.properties에 설정해주어야 자동 연결이 된다.

 

 

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

단, 이런 설정을 적용해도 본인은 계속 오류가 발생하였다.

 

 

구글링으로 계속 찾아본 결과, 충돌 문제로 인한 오류라고 한다.

application.properties에 다음 설정도 추가해주자.

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

 

이제 서버가 정상적으로 동작하고 MongoDBCompass에도 저장하는 데이터들이 표시될 것이다.

 

 

 

 

Embedded MongoDB Database

 

 

이제 테스트 코드를 진행하자.

테스트는 아주 간단하게 Embedded MongoDB Database를 이용하면 된다.

 

테스트 크래스에 @DataMongoTest 애노테이션만 적용하면 자동으로 내장 MongoDB로 테스트가 수행된다.

 

 

 

 

단, 이것도 설정이 필요하다..

test의 application.properties에 내장 DB의 버전만 명시해주면 된다.

여러 버전들마다 차이가 있겠지만 4.0.21 버전으로 진행해 보았다.

 

spring.mongodb.embedded.version=4.0.21

 

이제 테스트를 수행하면, 처음에 버전에 맞는 Embedded MongoDB를 다운로드를 하지만 이후에는 다운로드 없이 바로 실행 가능하다.

 

 

 

 

참조

 

https://docs.spring.io/spring-boot/docs/current/reference/html/data.html#data.nosql.mongodb

 

Data

The Spring Framework provides extensive support for working with SQL databases, from direct JDBC access using JdbcTemplate to complete “object relational mapping” technologies such as Hibernate. Spring Data provides an additional level of functionality

docs.spring.io

 

 

 

 

 

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함