JSON을 DTO로 변환하는 방법 (ObjectMapper 사용법)
이번 글에서는 Json 파싱을 위한 라이브러리 중 하나인 jackson-databind에서 제공하는 ObjectMapper 객체를 사용하는 방법을 정리해보겠습니다. ObjectMapper 객체는 JSON 문자열을 파싱해서 Obejct로 변환하는 역할을 합니다. 대표적인 세 가지 JSON 유형으로, 단일 객체 유형, 배열에 객체가 포함된 유형, 단일 객체가 객체 배열을…
이번 글에서는 Json 파싱을 위한 라이브러리 중 하나인 jackson-databind에서 제공하는 ObjectMapper 객체를 사용하는 방법을 정리해보겠습니다. ObjectMapper 객체는 JSON 문자열을 파싱해서 Obejct로 변환하는 역할을 합니다. 대표적인 세 가지 JSON 유형으로, 단일 객체 유형, 배열에 객체가 포함된 유형, 단일 객체가 객체 배열을…
Java에서 지원하는 람다와 스트림은 코드를 더 간결하고 유지보수하기 좋은 코드를 작성하는 데 큰 도움이 됩니다. 이번 글에서는 람다와 Stream 예제 코드를 통해 기본적인 구조를 파악해보고 기본적인 설명과 함께 이들을 활용하여 코드를 어떻게 더 간결하고 효율적으로 작성할 수 있는지 살펴보겠습니다. 람다가…
어떤 객체가 예상치 못하게 null이 되었을 때 그 객체의 메서드를 호출하면 NullPointerException이 발생합니다. 그래서 우리는 메서드를 호출하기 전에 객체가 null인지 확인하기 위한 코드를 반복적으로 추가하게 됩니다. 똑같은 예외 처리를 반복하다 보니 좀 더 효율적인 null 처리 방법을 찾게 되었고, 이를…
Spring Cloud OpenFeign은 스프링에서 제공하는 오픈소스 HTTP Client 입니다. 애플리케이션 내부적으로 다른 시스템과 HTTP 통신을 해야 할 때 간편하게 사용할 수 있습니다. OpenFeign 예제로 사용법을 간단하게 배워 봅시다. 간단한 Client Application과 Server Application을 만들어서 테스트합니다. 그런데 서로 다른 애플리케이션이 통신하는…
실무에서 ERD를 설계하고 개발했던 경험을 바탕으로 ERD 설계 방법에 대해 간단하게 정리하는 시간을 가져보겠습니다. ERD와 엔티티(Entity) ERD(Entity Relationship Diagram)는 엔티티 간의 관계를 그림으로 나타낸 것입니다. 엔티티란 개발자가 DB에 저장해서 관리하는 객체입니다. 저장된 객체를 식별하려면 각각을 식별할 수 있는 식별자가 있어야…
테스트 자동화의 핵심은 개발 소요 시간을 줄이는 것이라고 생각합니다. 개발 업무 중 시간을 효율적으로 쓰려고 노력하다 보니 자연스럽게 테스트 코드를 작성하면서 개발을 진행하는 습관이 생겼습니다. 실제로 낭비되는 시간을 줄이는 데 테스트 자동화가 도움이 되었습니다. 앞으로의 시간을 효율적으로 쓰기 위해 익힐…
RestController 테스트에 대해서 왜 알아둬야 할까요? 조금 공부해두면 여러분의 시간을 아낄 수 있는 무기로 사용할 수 있기 때문입니다. MockMvc을 활용한 RestController 테스트 방법을 익히면, REST API 개발 시 서버를 띄우고 직접 URL을 입력하여 요청을 보내고 응답을 눈으로 일일이 확인하는 일을…
우리는 테스트 코드를 작성할 시간이 없습니다. 기능만 구현하기에도 시간이 부족하다고 생각하기 때문이죠. 테스트 코드를 프로덕션 코드만큼 중요하게 생각하기는 쉽지 않습니다. 모두가 테스트 코드를 프로덕션 코드만큼 중요하게 생각한다면 일정을 산정할 때 테스트 코드 작성에 필요한 비용을 충분히 고려할 텐데, 슬프게도 그런…
객체 지향 프로그래밍의 SOLID 원칙 핵심에 대해서 정리한 글입니다. 이 글의 목적은 SOLID에 대해 상대방에게 설명하고 싶을 때 깔끔하게 핵심만 전달할 수 있도록 도와드리는 것입니다. 저의 주관적인 해석이 들어가 있을 수 있다는 점 참고 부탁 드립니다. SOLID 원칙 핵심 5가지…
대학생 시절 vim 에디터를 접하게 되면서 무시무시하게 많은 단축키들을 만났을 때, 이 단축키들을 잘 익히기만 하면 생산성이 대폭 향상되겠다는 생각을 했습니다. vim을 잘 다루는 게 진정한 개발자의 소양인 것처럼 보였죠. 그래서 vim에 익숙해지려고 노력했지만 결국 진입 장벽을 넘지 못하고 vim…