본문 바로가기

전체 글159

by 키워드를 사용한 Delegation 다음과 같이 Worker와 Student에 대한 interface가 있다고 할 때, interface Worker { fun work() } interface Student { fun study() } 이 두 interface를 상속받는 클래스를 구현할 때는 다음과 같이 직접 상속받아 구현하는 방식을 주로 사용할 것이다. class Developer : Worker, Student { override fun work() { println("Work hard!") } override fun study() { println("Study hard!") } } Kotlin 에서는 by 키워드를 사용하면 interface를 상속하되 직접 구현하지 않고, 클래스의 프로퍼티에 해당 interface에 대한 역할을 위.. 2021. 11. 6.
Kotlin Gradle Multi Module 적용하기 Java나 Kotlin을 사용할 때 Gradle을 사용하면 모듈형 아키텍처를 적용하는 것이 그리 어렵지 않다. (하지만 자세하게 설정하려고하면 Gradle을 잘 모르고서는 어렵다 👀 ) 이번 포스팅에서는 아래와 같이 2개의 모듈로 구성된 단순한 프로젝트를 만들며 Kotlin을 사용하면서 Gradle Multi Module을 적용하는 방법에 대해 알아보도록 하자 예제는 여기에서 확인할 수 있다. root 프로젝트 프로젝트 생성 먼저 모듈의 root가 되는 Gradle 프로젝트를 생성하자. 아래와 같이 Kotlin 설정을 한 뒤 프로젝트 GroupId, ArtifactId 등을 설정한 후 프로젝트를 생성한다. 불필요한 파일 삭제 root project에 소스코드는 필요하지 않기 때문에 없애도록 한다. 모듈 .. 2021. 11. 4.
Testcontainers MongoDB init script 실행하기 통합 테스트를 하다보면 가끔씩 인프라에 대해 init script(초기화 스크립트)를 작성하고 실행해야할 때가 있다. 이번 포스팅에서는 Spring Application에서 통합 테스트 시 테스트 인프라를 설정하기 위해 자주 사용되는 Testcontainers와 DB Module 중 하나인 MongoDB Module을 사용했을 때 초기 데이터를 위해 init script를 어떻게 실행할지에 대해 알아보도록 하겠다. (예제는 여기에서 확인할 수 있다.) 프로젝트 생성 Spring Boot 프로젝트를 아래와 같이 Spring Data MongoDB, Testcontainers 의존성을 추가하고 생성한다. 예제 도메인 클래스 추가 프로젝트 생성 후 MongoDB에 저장할 도메인 클래스를 추가하자 import .. 2021. 10. 29.
Start Spring Data MongoDB - 5. Integration Test 테스트 코드의 중요성을 알아도 외부 인프라스트럭쳐와 연동해야하는 경우 테스트 자동화를 하기가 매우 까다로워진다. 다행히 Java 진영에서는 Testcontainers를 사용하면 통합 테스트 시 외부 인프라스트럭쳐를 손쉽게 구성할 수 있을 수 있다. 이번 포스팅에서는 Testcontainers의 MongoDB Module을 사용하여 통합 테스트 환경을 구축하고 통합 테스트 코드를 작성하는 방법에 대해 알아보도록 하겠다. (관련 코드는 여기에서 확인 가능하다) Testcontainers MongoDB Module dependency 추가 Testcontainers MongoDB Module은 MongoDB Transaction 테스트를 도와주기 위한 Module이다. 이를 통해 좀 더 쉽게 MongoDB T.. 2021. 9. 4.
Start Spring Data MongoDB - 4. Application 코드 작성 개발을 위한 MongoDB 설정과 Spring Data MongoDB 설정을 마쳤으니 본격적으로 Application 코드를 작성해보도록 하겠다. (컨텐츠에 대한 데이터를 저정하는 애플리케이션을 기반으로 코드를 작성하였다.) (관련 코드는 여기에서 확인 가능하다) BaseDocumentEntity 먼저 Entity id와 생성일자, 수정일자를 갖는 BaseDocumentEntity 기반 클래스를 생성해보자. import org.springframework.data.annotation.CreatedDate import org.springframework.data.annotation.Id import org.springframework.data.annotation.LastModifiedDate import .. 2021. 9. 4.
Start Spring Data MongoDB - 3. Spring Data MongoDB 설정 앞서 포스팅을 통해 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/pla.. 2021. 8. 30.