전체 글

Develop/Spring

[Spring Boot] ConstraintValidator를 이용해 나만의 validator annotation 만들기

개요 데이터를 생성 또는 수정하는 REST API를 만들다보면 종종 클라이언트가 보낸 값을 검사하는 과정이 필요해진다. 유효한 이메일 형식인지 확인하거나, 입력값의 null 여부를 확인하는 등의 과정이다. 보통은 프론트엔드에서 화면 UI를 구성하기 위해 한 번 유효성 체크를 해주지만, 서버는 클라이언트가 아닌 다른 곳에서도 요청을 받을 수 있고, 클라단의 데이터 위변조 가능성도 무시할 수 없기에 서버 측에서도 한 번 더 유효성 검사를 해주는게 좋다. spring boot는 이런 개발자의 수고를 덜어주기 위해, 많이 사용되는 유효성 검사들을 'spring-boot-starter-validation' 라이브러리를 통해 제공한다. 하지만 프로젝트 요구사항은 항상 제각각이므로 위 라이브러리로 필드 입력 값을 ..

Develop/Java

[Java] 맥북에서 자바 버전 여러 개 돌려쓰기

 문제 22년 11월 말에 정식 출시된 Spring Boot 3 (Spring framework 6)은 Java 17 이상에서만 실행 가능하다. 자바 버전이 17 밑이라면 아예 사용조차 할 수 없다니, 제일 보편적으로 쓰이는 자바 버전이 8, 11인 것을 생각하면 꽤 파격적인 내용인 것 같다 🤔 하나의 자바 버전만 사용한다면 아무 문제 없겠지만, 만약 다른 자바 버전을 사용하는 여러 프로젝트를 동시에 진행 중이라면 꽤 골치 아파진다. 보통 우리는 편의를 위해 환경 변수를 이용해 자바 설치 경로를 할당한다. 매번 자바가 설치된 경로로 이동하기엔 번거로우니, 내 컴퓨터의 어느 경로에서 실행하더라도 커맨드 라인이 자바가 설치된 경로를 알아서 찾도록 설정해주는 방식이다. 이 과정에서 컴퓨터에 자바가 버전 별로..

Develop/Spring

[Spring Boot] 테스트 컨테이너로 테스트하기

개요 개발을 하면 할 수록, 테스트의 중요함에 대해 깨닫게 된다. 규모가 큰 프로젝트에서 코드 변경으로 인한 예기치 못한 사이드 이펙트를 방지해주고, 의도한 대로 기능이 동작하는지 빠르게 확인할 수 있게 만들어주는 테스트 코드. 작성한 후 돌려보는 것 까지 필수로 해야겠지? 🤔 테스트 컨테이너를 이용해 테스트 멱등성을 유지하며 손쉽게 프로젝트 테스트를 수행해보자! 테스트 환경을 만드는 세 가지 방법 📚 Test용 DB를 세팅하는 여러가지 방법 대부분의 경우 우리는 운영 환경별로 Property (Properties)를 분리해서 사용한다. 각 property 내부엔 active 환경에 맞는 DB, Log level 등 다양한 환경 설정이 존재한다. 개인적인 경험으로는, prod(운영 서버), dev(개발 ..

ETC/회고

[우아한테크세미나] 개발자 원칙 후기

3/29일 온/오프라인에서 진행된 "우아한 테크 세미나 : 테크리더 3인이 말하는 개발자 원칙"을 듣고 정리한 글입니다. 어느 날 딩동 온 메일! 주제가 흥미진진해서 냉큼 신청한 세미나인데, 운 좋게 당첨이 되었다 😄 원티드 리쿠르팅도, 네이버 deview도 연달아 떨어져서 슬퍼하고 있었는데 오랜만에 당첨되어 행복... 오후 반차 쓰고 호다닥 다녀온 우아한 테크 세미나 후기를 글로 남겨본다! 1️⃣ 동욱 님의 "제어할 수 없는 것에 의존하지 않기"🧑‍💻 일정을 잘 지키면서 버그는 많은 개발자 vs 일정은 못 지키지만 버그는 없는 개발자두 명의 개발자가 있다고 가정하자. A씨는 일정을 칼같이 지킨다. 단 한 번도 릴리즈 일정을 어긴 적이 없고, 협업할 때도 재깍재깍 맡은 일을 기간 내 수행한다. 근데 이제..

스껄한우디
호그와트 장학생