Back-End
[Java] Java 11 vs Java 17, JDK 17 정리
JDK 11 vs JDK 17 팀 프로젝트 진행 시 JDK11과 JDK17 버전 중 어떤 것을 사용할지 고민한 결과 그동안 많이 접해온 Java 11의 익숙함과 더 많은 정보 량을 가진 Java 11을 결정하기로 하였다. 고민하는 과정에서 공부한 Java 11, Java 17의 변경내용과 JDK17의 중요 업데이트 항목 중 하나인 record 클래스를 정리해보려고 한다. JDK 17까지의 주요 업데이트 JDK 11 Type Features Content 패키지 Jigsaw 모듈 시스템 모듈을 만들고 해당 모듈은 외부에서 호출할 수 있는 API를 제공하여, 언어레벨에선 직접적으로 해당 모듈에 접근이 불가능 패키지 New Garbage Collector, ZGC 추가 새로운 Garbage Collector ..
[Exception] Custom Exception을 언제 써야할까?
서론 서비스를 만들다보면 예외를 발생시키는 일이 많이 발생한다. 그에 따라 Java에서는 사용자가 상황에 따라 적절한 표준 예외를 처리할 수 있도록 기능을 제공하고 있다. 하지만 표준 예외 메시지 대신에 사용자 정의 예외 메시지를 제공하며, 일반적으로 특정 응용 프로그램 또는 라이브러리에서 발생하는 독자적인 예외 상황을 처리할 때 사용할 수 있는 `Custom Exception`는 의미 있는 예외처리가 가능하다. 표준 예외 처리, Custom exception으로 사용자가 직접 정의한 예외 처리, 두 가지를 비교하며 각각을 비교해보자. 표준 예외를 사용하면 안 될까? 다음 표는 사용자가 상황에 따라 자주 사용되는 표준 예외 예시이다. 예외 클래스 발생 상황 IllegalArgumentException 인..
[Spring] Rest-Assured 알아보기
서론 카페 키오스크 개발 당시, MockMvc 테스트 도구를 활용하여 애플리케이션 서버에 배포하지 않고도 스프링 mvc의 동작을 재현하며 테스트를 수행할 수 있었다. MockMvc 리팩토링 과정에서 Rest-Assured라는 테스트 도구를 알게 되었고, 이번 포스팅은 두 가지를 비교하면서 Rest-Assured에 대해 자세히 정리해보려고 한다. Rest-Assured 등장배경 기존의 테스트 프레임워크들은 API 테스트를 작성하는 것에 있어서 RESTful API의 HTTP 요청 및 응답을 쉽게 작성하고 검증하는 것이 어려웠다. REST-Assured는 간편하게 HTTP 요청을 작성하고 응답을 검증하는 기능을 제공하여 API 테스트를 효율적으로 작성할 수 있도록 도와준다. 또한 단위 테스트, 통합 테스트로..
[JPA] QueryDSL을 RepositoryImpl로 관리해보자.
서론 JPA와 MyBatis의 자바 ORM을 모두 경험한 결과, MyBatis는 SQL 쿼리에 더 직접적인 접근을 가지고 JPA는 객체지향적인 접근을 가지고 있어서 정적 쿼리를 다루는 것은 JPA가 비교적 간단하고 직관적이지만 동적 쿼리를 다루는 것은, JPA가 상대적으로 어려움(엔티티와 속성의 제약)이 있다. JPA의 장점을 더 살리기 위해 쿼리를 분리화 해서 유지 관리하기 쉬운 방법을 모색했고, RepositoryImpl 클래스 내부에서 QueryDSL을 사용하여 쿼리를 생성하고 실행하는 방식을 찾았다. 이번 포스팅은 그 방식을 spring 코드 예시로 설명하며 정리해보려고 한다. Repository에서 QueryDSL 사용하기 public interface OrderRepository extends..
[IntelliJ] 키셋 설정과 단축키로 효율적으로 테스트하기
서론 웹 개발 환경에서 IntelliJ IDEA가 각광받는 이유 중 하나는 개발에 필요한 플러그인, 편의성 다양한 도구등을 내장하고 있기 때문이라고 생각한다. IntelliJ의 추가적인 키셋 설정은 반복 작업의 자동화로 편의성을 높일 수 있다. 이번 포스팅에는 TDD를 작성하는 과정을 예시로 키셋 설정 방법을 정리해보려고 한다. 포스팅은 Window OS에서 작성되었습니다. 메일 서비스 TDD 주도개발 매출 통계 내역을 메일로 전송하려고 한다. 간단하게 생각해서 메일 서비스에 필요한 것은 무엇일까? - 메일 전송 파라미터를 담을 메서드 - 메일 전송 결과를 판단할 타입 - 메일 내용을 담을 Entity 등이 있을 것 같다. 메일서비스의 테스트 생성부터 테스트코드 작성 키셋, 통합테스트를 위한 gradle..