REST API 문서 자동화로 업무 효율 극대화하는 방법
·
Spring
이 글은 Spring REST Docs를 통해 Swagger 문서화를 자동화하는 방법과 이를 통해 업무 효율을 극대화할 수 있는 여러 가지 도구들에 대해 소개한다. Swagger는 가장 유명한 API 문서화 툴 중 하나이다. HTTP 통신을 통해 정보를 교환하는 REST API를 사용한다면 협업을 진행하기 위해 Swagger를 사용하고 있는 팀이 많을 것이다. 테스트 코드로 자동화했을 수도 있고, 주석을 다는 방법과 기타 방법을 사용해 자동화한 팀도 존재할 것이며, openapi 문서를 한땀한땀 직접 작성하는 분들도 있을 것이다. 몇몇 분들은 굳이 "Swagger가 굳이 필요하냐?", "테스트 코드를 통해 Swagger 문서를 자동화할 필요가 있냐?"고 의문을 가질 수도 있다. 하지만 내 대답은 "테스트..
[Spring Batch] Tasklet에서 왜 @BeforeStep과 @AfterStep이 동작하지 않을까?
·
Spring/Spring
1. Tasklet만으로는 beforeStep이나 afterStep을 트리거하지 못한다.Tasklet을 구현하고 StepBuilder에서 tasklet() 메소드를 등록해주는 것만으로는 @BeforeStep이나 @AfterStep을 사용할 수 없다.Tasklet에서 Step의 생명주기에 관여하고 싶다면 추가적인 작업이 필요하다는 말이다.@Configurationpublic class MemberJobConfig { @Bean("memberJob") public Job memberJob( JobRepository jobRepository, PlatformTransactionManager transactionManager) { return new JobBuilder("memberJob", ..
[Spring] RestClient URI Encoding 문제 (feat. 퍼센트 인코딩)
·
Spring/Spring
RestClient의 URI 인코딩DefaultUriBuilderFactoryRestClient를 생성할 때 보통 Builder를 사용해 만들게 됩니다.public interface RestClient { ... static RestClient.Builder builder() { return new DefaultRestClientBuilder(); } .... }RestClient.Bulider가 build() 하는 시점에 아래와 같이 DefaultUriBuilderFactory를 기본으로 생성해 가지고 있습니다.public class DefaultRestClientBuilder { ... @Override public RestClient b..
[Test] Testcontainers를 사용한 DB 테스트
·
Test
1. TestContainers란?예전에 프로젝트를 할 때 멱등성 있는 테스트를 구성하기 위해 테스트 DB를 따로 띄워 테스트를 실행했던 적이 있습니다. 그 때는 Testcontainers의 존재를 몰랐기에 Docker Compose로 테스트 DB를 띄워 테스트를 실행해줬습니다. 테스트 DB 컨테이너를 계속 띄워 놓기엔 때문에 컴퓨터 리소스 낭비도 심했기 때문에 통합 테스트를 실행해야할 때마다 테스트 DB 컨테이너를 띄워주고 테스트가 종료되면 컨테이너를 내리는 식으로 진행되었는데 정말 귀찮은 작업이었습니다. 이런 작업을 자동화해주는 Testcontainers입니다. 똑같이 Docker 환경을 사용하며 테스트가 실행될 때 실제 DB와 같이 돌아가는 DB 컨테이너를 띄워주고, 테스트가 종료되면 자동으로 컨테..
[Test] 비즈니스 로직 테스트: 읽기 쉽고 효율적인 단위테스트
·
Test
1. 비즈니스 로직을 테스트하기 전에 알면 좋은 지식1-1. Layered Architecture와 테스트이 글을 보기 전에 아래 글을 먼저 보고 오는 것을 추천한다. 1-1.Layered Architecture와 1-2.테스트의 분류만 읽고 와도 충분하다.https://myvelop.tistory.com/223 [Spring] Persistence Layer Test와 테스트에 대한 고찰단순히 Persistence Layer를 테스트하는 방법만을 서술하는 것이 아닌, 영속 계층을 테스트해야 하는 이유에 대해 정리하고 어떤 방식으로 테스트하는 것이 더 좋은 방법인지 고민한 내용을 정리해myvelop.tistory.com 간단히 요약하자면, Business Layer는 비즈니스 로직을 수행하는 계층으로 B..
[Test] Persistence Layer Test와 테스트에 대한 고찰
·
Test
단순히 Persistence Layer를 테스트하는 방법만을 서술하는 것이 아닌, 영속 계층을 테스트해야 하는 이유에 대해 정리하고 어떤 방식으로 테스트하는 것이 더 좋은 방법인지 고민한 내용을 정리해보려 합니다.  1. Persistence Layer (혹은 Repository Layer)Persistence Layer의 테스트를 하기 전에 Layered Architecture와 테스트의 분류에 대해 먼저 숙지해두면 각 레이어 별 테스트가 어떤 것을 목적으로 하는지 파악할 수 있고, 그 목적에 맞는 테스트를 만들 수 있다.1-1. Layered ArchitectureLayered Architecture에서 각 계층의 역할은 아래와 같다.Presentation Layer: 사용자의 요청과 응답을 처리하는..