개요서비스 개발 시 API 응답 형식을 통일하는 것은 매우 중요하다. 응답 형식이 일관되면 프론트엔드 개발자나 외부 API 소비자들이 더 안정적으로 데이터를 파싱하고 처리할 수 있으며, 디버깅이나 문서화도 수월해진다.이 글에서는 Spring에서 제공하는 ResponseBodyAdvice를 이용하여 공통 응답을 구성하는 방법을 소개하고, 그 과정에서 고려해야 할 점들을 정리해본다.사용이유Spring 기반의 API 서버를 만들다 보면, 모든 응답을 특정한 구조로 통일하고 싶은 경우가 많다.예를 들어 다음과 같은 응답을 원할 수 있다{ "success": true "code": 200, "message": "요청 성공", "data": { ... }} [ApiResponse.class]impor..
현대화 프로젝트를 진행하면서 기존에 사용하던 MyBatis 기반의 시스템을 JPA 기반으로 전환하게 되었다. 이 과정에서 가장 먼저 발생한 문제는 Entity 클래스의 대량 생성이다.기존 시스템은 테이블 정보가 Dataware에 잘 명시되어 있었지만, 이를 기반으로 매번 수작업으로 Java Entity 클래스를 생성하는 것은 비효율적이라고 생각했다. 수천 개에 이르는 테이블 정보를 일일이 열람하고, 이에 맞는 Java 클래스를 작성한다는 것은 단순 반복 작업일 뿐만 아니라 많은 비용이 소모된다고 생각했다. 게다가 Oracle의 데이터 타입과 Java의 데이터 타입 간 매핑 기준이 명확하지 않아, 매번 다음과 같은 고민이 뒤따랐다.Number(10)은 Integer로 두는게 맞을까? Long 로 두는게 맞..
회사의 업무에 도움이 되고자 데이터 마이그레이션 프로그램을 구현하면서 다중 데이터소스 구성을 적용했다.MySQL과 PostgreSQL 등 서로 다른 DB 간의 데이터를 이전해야 했기 때문에, 각 데이터소스에 대한 분리 설정이 필요했고, 이를 위해 Spring Boot 환경에서 @Configuration 기반의 다중 데이터소스 구성을 적용했다.그런데 단순히 쿼리를 날려 직접 DB에 접근할 때는 문제가 없었지만, Controller를 통해 데이터를 요청할 때는 응답 속도가 눈에 띄게 느려지는 현상이 발생했다.처음에는 단순히 데이터양이나 네트워크 지연 문제일 수 있겠다고 생각했지만, 실제 디버깅을 진행하면서 Datasource 설정 자체에서 매 요청마다 커넥션 비용이 크게 발생하는 것을 발견하게 되었다. 이 ..
✅ 스파르타코딩클럽 내일배움캠프 이전의 삶스파르타 이전의 나의 삶은 비전공자와 전공자 이 둘의 성향이 반반한 학과에서 공부를 하는 삶을 가졌었다. 비록 해당 학과가 각각의 분야에서 깊게 학습하기에는 어려운 환경이였지만, 스스로 여러 분야를 접목해보면서 나의 적성이 어떤 것인지, 진정으로 내가 하고싶은 것이 무엇이었는지 파악하기에는 충분한 시간이었다. 군대를 전역한 후, 복학하여 나는 대학에서 프로그래밍에 흥미를 느껴 해당 분야로 진로를 나아가기로 결심하였다. 프로그래밍 기초부터 시작하여 알고리즘, 프로젝트까지 내일배움캠프의 이전에 이미 학습을 했던 상태이다. ✅ 개발자가 되기로 결심한 계기나는 평소에 밖으로 나가면 단순히 땅을 보며 걷는 것이 아니라 주변을 관찰하고 개선 가능성을 머릿속으로 상상하는 습..
이번 팀은 Spring 입문과 숙련 기간이 겹쳐 다른 과제 기간과 달리 4주라는 시간을 함께 보냈다. 🦑 사실 4주라는 시간이 짧은 시간이라고 생각할 수 있지만 어떤 시점에서 보면 길게도 볼 수 있는 시간이라고 생각을 한다. 이번 팀이 긴 시간을 함께 하는 만큼 팀과의 합심이 좋지 않다면 정말 괴로운 시간을 보낼수도 있겠다 생각을 하였다. 하지만 그 생각은 첫날 팀과의 첫 대화를 나누는 시간에 먼지처럼 사라졌다. 우리 팀은 다른 팀보다 더 활발하고 재치있으며, 무엇보다 학습에 열정적이라고 자부할 수 있었다. 지난 프로그래밍 기초 주차에서 부족했었던 부분을 보완하기 위해서 만남을 가진 첫째날 팀들의 프로그래밍 역량을 파악한 뒤 Spring입문을 들어가기 앞서 Java에 대한 역량을 강화하는데 집중하는 시간..
2주 동안 Java에 대해서 기본적인 강의를 수강하며, 개인 프로젝트, 팀 프로젝트를 진행하였다. 생각 보다 짧은 기간 내에 다양한 것들을 경험해보는 좋은 시간을 가진 느낌이다. 우선 이 시간동안 함께 걸어온 광주 님, 규빈 님, 유석 님에게 고생하셨고, 감사하다는 말을 먼저 전하고 싶다. 😀 팀 프로젝트에 대한 소개에 앞서 먼저 개인 프로젝트에 대한 간략한 소개를 한다면... 개인 프로젝트 🍕 개인 프로젝트는 자신이 평소 좋아하는 음식을 주제로 Kiosk를 개발하는 것이었다. https://github.com/junxtar/java-kiosk 자바를 활용한 피자 주문 프로그램 만들기 🍕 느낀점 ✏️ 개인 프로젝트를 진행하면서 기능 부분에서 어려움을 느꼈다기보다는 프로젝트를 어떻게 설계할 것인지에 대해서..
미니 프로젝트가 눈 깜짝할 사이에 끝났다. 1주일이 채 안 되는 기간 내내 매일 행복하게 코딩할 수 있게 해준 해인님, 건우님, 승준님, 하람님 모두 감사하고 고맙습니다! 여러분들과 함께했기 때문에 프로젝트를 잘 마칠 수 있었어요! 😀 1. 프로젝트 소개 ⏰ 진행기간 2023년 10월 4일 ~ 2023년 10월 11일 ✅ TEAM 팀명 🐾개발자취🐾 팀 소개 개발자는 개발문서를 학습하고 기록하여 자신의 발자취를 남긴다고 생각해 개발자의 발자취를 줄여서 🐾개발자취🐾 라고 팀명을 정하였습니다. **✅ Project** 우리가 미니프로젝트로 진행한 프로젝트는 팀원을 소개하는 페이지를 제작하는 프로젝트입니다. 이곳은 팀원을 소개하는 공간 뿐만 아니라 방명록 페이지를 제작하여 팀원을 제외한 인원 분들도 페이지의 기..
https://www.acmicpc.net/problem/2812 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; import java.util.S..