ControllerAdive 에러 핸들링
서론 Spring에서 예외 상황이 발생했을때, 에러를 발생시켜 처리해야한다. 하지만 기존의 RuntimeException은 핸들링하기 쉽지가 않다. 이럴때 ControllerAdvice를 이용해 에러를 핸들링 해보자. CustomException 일단 에러를 원하는대로 핸들링하기 위해서는 기존의 RuntimeException의 형태를 변형시켜서 ...
서론 Spring에서 예외 상황이 발생했을때, 에러를 발생시켜 처리해야한다. 하지만 기존의 RuntimeException은 핸들링하기 쉽지가 않다. 이럴때 ControllerAdvice를 이용해 에러를 핸들링 해보자. CustomException 일단 에러를 원하는대로 핸들링하기 위해서는 기존의 RuntimeException의 형태를 변형시켜서 ...
서론 Spring에서 @Valid 어노테이션으로 데이터를 검증할때 여러개의 어노테이션을 동시에 붙여서 검증하는 경우가 있다. 이 경우에 @NotBlank, @Pattern, @Size 등을 사용하는데 어노테이션간의 검증 순서를 정하는 법에 대해서 오늘 알아보자. 검증 순서 예를 들어, 공백의 데이터가 들어왔을때 아래와 같은 검증을 거친다고 생각해...
서론 테스트를 범위에 따라 분류했을때 크게 유닛테스트, 통합테스트, 인수테스트로 나눌 수 있다. 오늘은 이 세가지 테스트의 개념에 대해서 알아보자. 단위테스트 흔히들 Unit Test 라고 부르는 단위테스트는 프로그램에서 테스트 가능한 가장 작은 단위를 실행하여 예상대로 동작하는지 확인하는 테스트를 말한다. 단위테스트에서 테스트 대상 단위가 엄...
서론 Springboot에서 도서관 예약 시스템을 개발하고 있던 중 JUnit을 통해 테스트 코드를 만들게 되었다. 기능별로 테스트 케이스를 만들었지만, 개발 중에 테스크 코드를 통해서가 아닌 다른 방식으로 테스트를 진행하며 개발하던 나에게 이런 테스트 코드 작성이 크게 효율적으로 다가오지는 않았다. Postman과 같은 프로그램을 통해 하나하나 테...
서론 자바에서 변경 불가능한 데이터를 객체간에 전달할 때 보통 또 다른 객체를 만들어 전달한다. 이를 DTO 등 여러 명칭으로 부르곤 하는데 이때 사용할 수 있는 Java record에 대해서 알아보자. record 자바 레코드는 JAVA 14 에서 추가되었다. 보통 불변하는 데이터를 저장하고, 전달하는데 사용되는 특수한 객체 형태이다. 특징으...
서론 데이터베이스에서 상태를 변화시키는 작업을 할때 SQL을 이용해 데이터베이스에 접근하고 작업한다. 오늘은 이 작업의 단위인 트랜잭션에 대해서 알아보자 Transation 트랜잭션은 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위를 의미한다. 데이터베이스의 상태를 변화시키기 위해서는 SQL문을 이용해 데이터베이스에 접근해야한다. 우리...
서론 서버에서 요청을 처리하기 전과 후로 작업을 공통적으로 처리해줘야하는 경우가 있다. 그럴때 사용할 수 있는 기능이 필터와 인터셉터이다. Filter 필터는 J2EE 표준 스펙 기능 중 하나이다. J2EE란 자바 기술로 기업 환경의 어플리케이션을 만드는데 필요한 스펙을을 모아둔 스펙 집합을 말한다. 필터는 디스패처 서블릿(Dispatcher ...
서론 서버에서는 여러가지 인증방식이 있다. 오늘은 인증방식 중 하나인 OAuth에 대해서 알아보자. OAuth란? OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 어플리케이션의 접근 권한을 부여할 수 있도록 할 수 있는 표준 프로토콜이다. 예를 들어, 쇼핑몰에서 카카오톡, 페이스북 아이디...
서론 저번글에서는 JWT의 토큰 처리 방식 중 크게 상태 저장방식과 상태 비저장방식으로 나눠서 알아봤다. 오늘은 실제 JWT를 어떻게 처리하면 좋을지에 대해서 같이 고민해보자. 어떤 처리방식이 좋을까? 상태 저장방식은 말 그대로 토큰의 상태를 저장하는 방식이다. 해당 방식은 데이터베이스에 토큰을 저장하여 인증시마다 토큰이 유효한지 데이터베이스를 ...
서론 JWT에서 토큰을 처리하는 방법에 있어서 총 두가지 방법이 있다. 하나는 토큰을 따로 저장하지 않고 처리하는 상태 비저장 방식, 또 다른 하나는 서버에 토큰을 데이터베이스에 저장해 처리하는 상태 저장 방식이 있다. 오늘은 이 두가지 방식에 대해서 알아보고 각 장단점을 알아보자. 상태 비저장 상태 비저장 방식은 서버 측에 토큰을 따로 저장하지...