본문 바로가기

Spring32

@RestControllerAdvice를 활용한 예외처리 예외를 처리할때 각각의 메서드에서 try-catch를 이용해서 처리하게 되면 코드의 라인이 길어지고 더불어 가독성도 떨어지게된다. 이렇게 되면 같이 협업하는 동료 입장에서도 업무 효율이 떨어지게 된다. 이럴때 사용할 수 있는 것이 공통 예외 핸들러를 통해서 관리하는 방법이다. @RestControllerAdvice를 활용한 예외처리 @ControllerAdvice 먼저 @ControllerAdvice는 @ExceptionHandler, @ModelAttribute, @InitBinder 가 적용된 메서드들에 AOP를 적용하여 컨트롤러단에 적용하기 위해 고안된 어노테이션이다. 해당 어노테이션을 통해 모든 @Controller에 대해서 전역적으로 발생할 수 있는 예외를 잡아서 처리할 수 있다. @RestCo.. 2022. 9. 6.
Spring - 서블릿과 디스패쳐서블릿 웹을 만들기 위해서 필요한 기술중에 하나인 서블릿에 대해서 정리하고, 스프링에서의 서블릿과 디스패쳐 서블릿 각각의 정의를 정리하고 차이점을 정리한다. 서블릿과 디스패쳐서블릿 서블릿? 자바를 사용하여 웹을 만들기 위해 필요한 프로그래밍 기술 요청에 대해 동적으로 처리해주는 역할로서 서버 사이드에서 작동함(WAS) HttpServlet이라는 자바의 클래스를 상속받음 서블릿 생명 주기 Servlet 객체 생성 (1회) init() 호출 (1회) service(), doGet(), doPost() 호출 (요청 시 매번) destory() 호출 (1회) 서블릿 컨테이너? 서블릿은 요청을 받거나 내보낼 때 자신이 알아서 하는 것이 아닌 서블릿을 실행시키는 주체인 서블릿 컨테이너라는 것을 이용 서블릿 컨테이너는 어떤.. 2022. 9. 4.
@NotFound 어노테이션 들어가며 해당 어노테이션은 연관관계에서 조인한 대상의 값이 존재하지 않는 경우에 발생하는 EntityNotFoundException의 발생을 무시할 수 있는 어노테이션 옵션을 가지고 있다. 설계가 조인 대상의 값이 없더라도 진행되도록 하기위해서는 @NotFound 어노테이션의 IGNORE 옵션을 사용하면 된다. @NotFound 옵션별 설명 및 예외발생 @NotFound(action = NotFoundAction.IGNORE) 와 @NotFound(action = NotFoundAction.EXCEPTION) 이렇게 두가지가 있다. 먼저 IGNORE 옵션은 아래 설명에도 나와 있듯이 존재하지 않더라도 무시하는 것이고 EXCEPTION 옵션은 EntityNotFoundException을 발생시킨다. EXC.. 2022. 8. 3.
Spring Data JPA - Pageable을 이용한 Pagenation 처리 방법 들어가며 API를 만들다보면 모든 정보를 한번에 전달하는 것이 아닌 일부분만 전달해줘야하는 경우가 있다. 예를 들어 게시판과 같은 여러 글이 있는 게시글들의 정보를 전달할때이다. Spring-Data-JPA에서는 Pageable이라는 객체를 제공하여 해당 기능을 편리하게 사용할 수 있도록 도와준다. 개념과 사용 방식에 대해서 정리한다. Pagenation ? 게시판의 글을 보여줄 때 모든 글을 한번에 보여주는 것이 아닌 페이지별로 글을 나눠서 쪽수별로 보여준다. 정렬 방식 또한 설정 가능하다. 이처럼 요청한 페이지의 숫자와 총 몇페이지 또는 정렬 방식 등등 요청에 따라 정보를 전달해주는 것이 Pagenation이다. Pageable이란? 이러한 기능을 개발자가 직접 개발을 해서 이용할 수도 있지만 JPA.. 2022. 7. 17.
SpringBoot Cloud - MSA & Eureka & FeignClient(OpenFeign) & CircuitBreaker(Hystrix & Resilience4J) 차례대로 알아보기 시리즈 (4-2) - CircuitBreaker 설정방법 들어가며 지난 시간에는 CircuitBreaker 개념에 대해서 알아보았고 이번 시간에는 설정 방법과 테스트에 대해 정리한다. 시리즈 1 - MSA https://sjparkk-dev1og.tistory.com/151 MSA & Eureka & FeignClient(OpenFeign) & CircuitBreaker(Hystrix & Resilience4J) 차례대로 알아보기 시리즈 (1) - MSA(Mi 들어가며 이 글은 제목에서도 알 수 있듯이 MSA & Eureka & FeignClient(OpenFeign) & CircuitBreaker(Hystrix & Resilience4J) 순으로 개념과 설정방법 그리고 테스트 등의 결과와 해당 기술들을 테스트하며 겪었.. sjparkk-dev1og.tist.. 2022. 7. 7.
@JsonIgnore 사용시 발생한 문제점과 @JsonProperty를 이용한 해결 방법 정리 들어가며 이번 글을 제목에 나와 있는 그대로 @JsonIgnore 사용시 발생한 문제점과 @JsonProperty를 이용한 해결 방법 정리를 해보려고 한다. 상황은 이러했다. Response dto 객체를 만들던 도중 하나의 필드가 프론트쪽 응답에는 전달되면 안되고 로직 내에서는 사용이 되어야하는 케이스가 발생하였다. 기존에 알고 있던 @JsonIgnore 어노테이션을 통해 해결을 하려고 했는데 문제가 생겼다. 이때 발생한 문제점과 해결방안에 대해 정리한다. 문제 이러한 문제는 dto와 domain 객체 간의 JSON 직렬화 또는 역직렬화 상황에서 특정 필드만을 제외하고 싶은 경우에서 @JsonIgnore를 사용하게 되면 해당 필드는 제외가 되긴한다. 하지만 내가 원하는 상황은 응답으로만 전달되지 않고 .. 2022. 6. 29.