SpringBoot 24

[SpringBoot] NativeSQL / JPQL CASE WHEN 로직 구현(1)

안녕하세요. 회사와 함께 성장하고 싶은 KOSE입니다. 이번 포스팅은 SpringBoot의 Data JPA에서 제공하는 NativeSQL, JPQL을 활용하여 CASE WHEN을 활용한 집계 함수를 적용하는 과정을 정리하고자 합니다. (수정) Data Jpa를 활용하면 다양한 로직을 구현할 수 있습니다. find(), delete(), save(), update() 등 CRUD 로직을 간단한 jpa 용법을 활용하여 구현할 수 있습니다. 하지만, 복잡한 쿼리를 구현해야 할 때 사용자 정의 메서드를 구현해야 할 필요성이 있습니다. 이번에 구현하는 비즈니스 로직은, 다음과 같습니다. A라는 게임을 참여한 사용자들의 게임 결과를 바탕으로, 사용자 id, 게임에서 이긴 횟수, 게임에서 진 횟수, 게임에서 이긴 비..

SpringBoot 2023.01.06

[SpringBoot] 스프링 제공 빈 후처리기(1)

오늘은, 영한님 스프링 핵심 원리 - 고급편의 강의를 듣고, 스프링 제공 빈 후처리기를 추가로 실습하고 정리한 내용을 작성하고자 합니다. 빈 후처리기 적용에 앞서, 빈 후처리기와 같은 기능을 사용하는 이유를 정리해보고자 합니다. 애플리케이션 실행 시 의도대로 사용되어야 하는 기능은 비즈니스 로직입니다. 하지만, 기획 의도나 개발 운영에 있어 부가적인 기능을 추가로 실행시켜야 하는 상황이 생길 수 있습니다. 이를 부가 기능이라고 하는데, 만약 프록시 기술 적용 없이, 부가 기능을 적용하려고 한다면 기존 애플리케이션에 존재하는 비즈니스 로직에 추가 코드를 삽입해야 하는 상황이 생길 수 있습니다. 만약, 단순하게 로그를 찍는 상황이 아니라, 해당 클라이언트의 요청에 따라, controller -> servic..

SpringBoot 2023.01.06

[SpringBoot] 인터페이스 의존성 주입을 활용한 테스트 코드 작성하기

SpringBoot를 활용하여 단위테스트를 작성할 때, 여러 의존성 주입으로 인해 원하는 부분의 단위 테스트를 작성하지 못할 수 있습니다. 예를 들어, A라는 메서드에 B, C의 메소드의 값을 리턴 받거나, 실행되어야 하는 메서드인 경우, A라는 메서드를 실행하기 위해 B, C 모두 실행되어야 합니다. 아래와 같은 경우, methodA를 단위 테스트하는 과정에 methodB, methodC를 참조하고 있으므로 methodB 및 methodC를 검증한 상태라면 중복되는 테스트라고 볼 수 있습니다.해당 예시는 처리하기 용이한 과제이기 때문에 테스트 코드 작성하는 것이 난해하지 않지만, 복잡한 과정일 경우, 여간 쉬운 일이 아닙니다. private class A { String methodA(Strin..

SpringBoot 2023.01.03

[SpringBoot] 인터셉터(Interceptor)

안녕하세요. 이번 포스팅은 SpringBoot의 Interceptor에 대한 내용과 활용법에 대해 정리하고자 합니다.먼저, 이번 포스팅에 많은 도움을 준 블로그 주소는 아래 링크입니다. Spring뿐만 아니라, 다양한 정보를 자세하게 설명해 주셨는데, 정말 도움 많이 되는 블로그여서 추천드립니다.!(링크: https://mangkyu.tistory.com/173) 1. 인터셉터(Interceptor)란? a. 인터셉터 의미 인터셉터는 스프링에서 제공하는 기술로써 디스패처 서블릿(Dispacher Servlet)이 컨트롤러를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공합니다. 스프링 레벨에서 지원하는 서블릿 필터이기 때문에, 스프링의 모든 빈 객체에 접근할 수 있으며, 활용도..

SpringBoot 2022.12.29