Spring-data-mongodb + docker 사용해보기
토이 프로젝트

Spring-data-mongodb + docker 사용해보기

안녕하세요.

 

오늘은 토이프로젝트에 몽고 디비(이하 몽고) 설정을 추가해 보려고 합니다.

 

실무에서 몽고를 사용한 적은 있었는데요. 뭔가 깊게 사용해보지 않았다는 생각이 많았었어요!

이번 기회로 프로젝트에 몽고 의존성을 추가해보고 기획 내용을 추가하여 몽고를 사용 해보도록 하겠습니다.

 

모든 소스 코드는 https://github.com/lkimilhol/matchingProject 에서 확인 가능 합니다!

 

1. 도커에 몽고 설치


일단 저는 도커를 이용하려고 해요. docker를 pull 받도록 해보겠습니다.

 

docker pull arm64v8/mongo

M1을 사용해서 arm으로 pull 받도록 하겠습니다.

잘 추가가 되었네요.

 

이제 아래 명령어를 사용하여 몽고를 띄워놓겠습니다.

docker run -d -p 27017:27017 --name mongo 394109e13c9f

(포트를 꼭 지정해주세요!)

 

몽고와 연결을 하니 IDE에서 잘 연동 된 것을 확인 할 수 있습니다.

 

2. 스프링 의존성 추가


다음은 Spring의 의존성을 추가하고 yml 파일에 설정을 추가해 보도록 하죠.

implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'

다음은 application.yml 파일에 추가 된 내용입니다.

spring:
  data:
  	mongodb:
    	uri: mongodb://127.0.0.1:27017/matching
        username:
        password:
        test:
          connectionString: mongodb://localhost:27017/test

마지막으로 MongoTemplate을 구현해 주도록 합니다. Spring-boot-starter-data-mongodb의 의존성을 추가해주면 template을 따로 구현해줘야 하는지 몰랐는데 서버 실행시 에러가 났었습니다. (이 부분은 추가적으로 더 공부해봐야곘네요)

 

MongoDBCofing.java

@Configuration
public class MongoDBConfig {
    @Value("${spring.data.mongodb.test.connectionString}")
    private String connectionString;

    @Bean
    public MongoDatabaseFactory mongoDatabaseFactory() {
        return new SimpleMongoClientDatabaseFactory(connectionString);
    }

    @Bean
    public MongoTemplate mongoTemplate() {
        return new MongoTemplate(mongoDatabaseFactory());
    }
}

서버를 실행 시키면 정상적으로 서버가 실행 되는 것을 확인 할 수 있습니다!

 

3. Repository 구현해 보기


정상적으로 데이터가 들어가는지 확인해보겠습니다.

 

몽고를 사용하여 어떤 기획을 풀어갈지 정해지지 않아서, 일단 간단한 클래스를 생성하여 테스트를 해보도록 할게요.

 

OrderCurrent.java

@Document(collection = "current")
public class OrderCurrent {

    private String name;
    private String job;

    public OrderCurrent(String name, String job) {
        this.name = name;
        this.job = job;
    }

    @Override
    public String toString() {
        return "name is " + name + " job is " + job;
    }
}

 

그리고 레퍼지토리를 추가합니다.

 

public interface OrderMongoRepository extends MongoRepository<OrderCurrent, String> {
}

테스트케이스를 작성합니다.

 

OrderMongoRepositoryTest.java

@DataMongoTest
class OrderMongoRepositoryTest {

    @Autowired
    private OrderMongoRepository orderMongoRepository;

    @DisplayName("생성")
    @Test
    void create() {
        // given
        OrderCurrent orderCurrent = new OrderCurrent("test", "job");
        // when
        OrderCurrent actual = orderMongoRepository.save(orderCurrent);
        // then
        assertThat(actual).isNotNull();
    }
}

테스트를 실행시키면 통과 되는 것을 확인 할 수 있습니다.

 

데이터가 정상적으로 등록되었습니다

4. 마치며


mongoDB에 의존성을 추가하여 쉽게 구현한 예제입니다.

앞으로 mongoDB를 사용하여 어떤 일들을 해낼 수 있는지 개발을 해 볼 예정이에요.

 

이렇게 하면 실무에서 간단하게 썼던 mongoDB에 대해서 더 잘 알수 있는 기회가 되겠네요.

 

감사합니다!

'토이 프로젝트' 카테고리의 다른 글

Kafka offset에 대해서  (0) 2021.12.05
Kafka 메시지 순서 보장 확인해보기  (0) 2021.10.17
MongoDB를 활용하여 Repository 구현  (0) 2021.08.11