728x90

BackEnd/Spring Boot 47

Request PathVariable Enum Converter

개요 API 개발 도중 @PathVariable를 enum Type으로 설정 하였다. 이러다 보니 한가지 오류가 발생했는데 Enum에 없는 데이터가 넘어 오면 Exception이 발생 하였습니다. 이를 해결하기 위해 Spring Boot Converter를 사용하였습니다. 이는 @PathVariable 뿐만 아니라 @ModelAttribute, @RequestParam에서도 동작 한다고 되어 있다. 따라서 외부에서 날라오는 데이터를 바인딩 하는데 Header에 있는 데이터 뿐만 아니라 Body에 있는 데이터도 되는지 한번 확인해 봐야 할꺼 같다.(Stack Over Flow에서 비슷한 질문인데 확인 해봐 야 할거 같습니다.) Spring Boot Document Spring 3.0 Document에는 이..

BackEnd/Spring Boot 2023.04.16

Enum 등록된 값 이외에 값 등록시

개요 Enum에 잘못된 값을 넣게 되면 오류가 뜨게 되므로 이를 방지 하기 위해 @JsonCreator을 사용 코드 public enum LangCode { KO, JA, EN; // Enum에 데이터를 입력 하면 실행이된다. // 원하는 데이터가 없으면 null이 입력이 된다. @JsonCreator(mode = JsonCreator.Mode.DELEGATING) public static LangCode findByCode(String name) { return Stream.of(LangCode.values()) .filter(c -> c.name().equals(name.toUpperCase())) .findFirst() .orElse(null); } }

BackEnd/Spring Boot 2023.04.16

TypeHandler

개요 Mysql 과 Mybatis로 개발을 진행 하였습니다. Paging 처리된 List를 불러오는 도중 하나의 Row에 특정 code list를 한번에 불러 왔어야 했습니다. 그러다 보니 Left Join과 Limit을 처리 하면 code list 별로 짤린후 resultMap이 되어 Collection을 사용해도 정확한 Paging 데이터를 가져올수 없었습니다. 그래서 서브쿼리에 GROUP_CONCAT을 사용하여 Code List를 한번에 문자로 받아 왔습니다. 하지만 이는 String으로 넘어 오기 때문에 List Type 으로 각각 쪼갤려면 서버에서 for문을 돌려서 하나하나 split 하여야 했습니다. 이러한 동작을 별도로 하기 전에 TypeHandler를 사용하여 resultMap에서 데이터를..

BackEnd/Spring Boot 2023.04.16

Exception Handler

개요 RestAPI 개발을 하다가 외부 에서 API요청시 잘못된 Path로 MissingPathVariableException이 발생할때가 있었다. Exception이 뜨는건 좋은데 Log에 Exception이 같이 기록 되는데 매우 보기 안 좋았다. 그래서 ExceptionHandler를 사용하여 잘못된 요청이라는 Json을 Return하도록 설정 하였다. 수정 코드 // Exception이 발생하면 CustomExceptionHandler을 체크 하겠다는 어노테이션입니다. @RestControllerAdvice public class CustomExceptionHandler { // ()안에 작성되는 Exception을 Handler역활을 하겠다는 어노테이션입니다. @ExceptionHandler({..

BackEnd/Spring Boot 2023.04.16

War VS Jar

War, Jar 차이 Archive 직역 : 보관소 서버 에서의 뜻 : 참고용 데이터 보관소 Applet 플러그인의 하나로서 전용 위젯 엔진이나 더 큰 프로그램 범위 내에서 실행되는 특정한 작업을 수행하는 조그마한 응용 프로그램을 말한다. What is JAR. Java Archive Zip 파일 형식 기반으로 압축을 풀지 않아도 사용 가능 하며 파일 사이즈도 작다 .jar 확장자 파일에는 Class와 같은 Java 리소스와 속성 파일, 라이브러리 및 액세서리 파일이 포함되어 있습니다. JAR 파일은 원하는 구조로 구성이 가능하며 JDK(Java Development Kit)에 포함하고 있는 JRE(Java Runtime Environment)만 가지고도 실행이 가능합니다. JAR 파일은 서버가 포함된 ..

BackEnd/Spring Boot 2023.04.16

AOP란?

정의 및 용어 설명 AOP(Aspect-Oriented Programming)는 프로그램 구조에 대한 또 다른 사고 방식을 제공하여 객체 지향 프로그래밍(OOP)을 보완합니다. OOP에서 모듈화의 핵심 단위는 클래스인 반면, AOP에서 모듈화의 단위는 측면입니다. Aspect는 여러 유형과 객체를 가로지르는 관심사(트랜잭션 관리 등)의 모듈화를 가능하게 합니다. (이러한 문제는 종종 AOP 문헌에서 "crosscutting" 문제라고 합니다.) Spring FrameWork에서 AOP AOP 용어 설명 영문을 구글 번역이나 직역으로 하면 이해 하기 어렵기 때문에 영문을 보고 이해한 내용으로 해석 하였습니다. 필히 참고시 영문 문서를 확인해 주세요 Aspect A modularization of a con..

BackEnd/Spring Boot 2023.04.15

Spring boot Test Case

개발을 하다 보면 Service 기능별 테스트를 해야 할 때가 있다. 그렇다고 테스트 할때마다 서버를 동작시켜 서비스가 실행되는 동작까지 가기에는 은근히 시간을 잡아먹게 된다. 이때 Spring Boot 의 Test 기능을 사용하면 시간이 단축되며 수많은 TestCase를 실행할 수 있다. 한번 간단하게만 사용해 보면 끊을수 없다 Import Dependency testImplementation 'org.springframework.boot:spring-boot-starter-test'위의 Dependency를 추가하면 된다. 기본적으로 Junit의 기능을 사용하며 따로 Junit Import 할 수도 있다. 기본 테스트 방법 지금 작성한 내용 2개만 알아도 기본적인 Service, API..

BackEnd/Spring Boot 2023.04.15

Spring Request Flow

Spring을 사용하면서 Client에서 Request 요청 시 어떤 동작을 하는지에 대해 정리 한 내용입니다. 설명 Request : 요청, Response 응답 Dispatcher Servlet Dispatcher란? 준비 리스트의 맨 앞에 있던 프로세스가 CPU를 점유하게 되는 것, 즉 준비 상태에서 실행 상태로 바뀌는 것을 디스패치라고 하며 다음과 같이 표시한다. Servlet 이란? 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말한다. DispatcherServlet 이란? DispatcherServlet은 Spring MVC 웹 애플리케이션에 대한 클라이언트 요청에 대한 단일 진입점을 제공하고 처리를 위해 요청을 Spring MVC 컨트롤러에 전달하는 것과 같은..

BackEnd/Spring Boot 2023.04.15

Token JJWT

JJWT aims to be the easiest to use and understand library for creating and verifying JSON Web Tokens (JWTs) on the JVM and Android. JJWT는 JVM 및 Android에서 JSON 웹 토큰(JWT)을 생성하고 확인하기 위해 사용하고 이해하기 가장 쉬운 라이브러리를 목표로 합니다. JWT 란? JWT는 검증 가능한 간결한 형식으로 두 당사자 간에 정보를 전송하는 수단입니다. 사용 방법 방법. 1 jjwt Dependency 사용 1. Repository 홈페이지에서 Dependency 를 설정 import io.jsonwebtoken.*; import org.springframework.beans.Nul..

BackEnd/Spring Boot 2023.04.15
728x90