Spring Exception Handler & Rest Controller Advice
📘 Backend/Spring2023. 4. 3. 07:35Spring Exception Handler & Rest Controller Advice

📘Exception Handler 예외 발생 가능성이 있는 상황 클라이언트 요청 데이터에 대한 유효성 검증에서 발생하는 예외 서비스 계층의 비즈니스 로직에서 던져지는 의도된 예외 런타임 예외 UserController에 Exception Handler 적용 RequestBody에 유효하지않은 데이터 요청이 오면, 유효성 검증에 실패 유효성 검증에 실패시 내부적으로 던져진 예외인 MethoddArgumentNotValidException을 handleException() 이 받음 그 후, MethodArgumentNotValidException 개체에서 getBindingResult(), getFieldErrors() 를 통해, 발생한 에러 정보를 리스트로 확인 가능 객체에서 얻은 정보인 filedErro..

Service Layer
📘 Backend/Spring2023. 4. 3. 07:28Service Layer

📘API Service 연동 실습 API 계층에서 전달받은 DTO 객체를 서비스 계층의 도메인 엔티티 객체로 변환 계층별 관심사 분리 코드 구성의 단순화 Rest API 스펙의 독립성 확보 리팩터링 포인트 1. 컨트롤러의 핸들러가 DTO를 엔티티로 변환하는 작업까지 하고있다 DTO를 엔티티로 변환하는 작업을 다른 클래스에게 변환 위임 = membermapper 컨트롤러는 이제 두 클래스의 변환작업을 안함 (역할 분리) 2. 엔티티 클래스의 객체를 클라이언트의 응답으로 전송함으로써 계층간 분리 X 클라이언트 응답을 엔티티 클래스로 전송하지말고, 엔티티의 객체를 DTO의 객체로 바꿔줌 membermapper가 엔티티를 dto로 변환해줌으로써 서비스에있는 엔티티를 apu에서 직접 사용하는 문제 해결 📘구현 E..

정규표현식 (Regex)
📘 Backend/Spring2023. 4. 2. 13:19정규표현식 (Regex)

📘정규표현식 (Regex) ‘^’은 문자열의 시작을 의미합니다. ‘$’는 문자열의 끝을 의미합니다. ‘’는 ‘’ 앞에 평가할 대상이 0개 또는 1개 이상인지를 평가합니다. ‘\s’는 공백 문자열을 의미합니다. ‘\S’ 공백 문자열이 아닌 나머지 문자열을 의미합니다. ‘?’는 ‘?’ 앞에 평가할 대상이 0개 또는 1개인지를 의미합니다. ‘+’는 ‘+’ 앞에 평가할 대상이 1개인지를 의미합니다. Flags global = g 매칭되는 다수의 결과값 기억 multi line = m single line = s unicode = u sticky = y case insensitive = i Character 의미 | 또는 () 그룹 [] 문자셋, 괄호안의 어떤 문자든 [^] 부정 문자셋, 괄호안의 어떤 문가 아닐..

Data Transfer Object (DTO)
📘 Backend/Spring2023. 4. 2. 13:17Data Transfer Object (DTO)

📘DTO (Data Transfer Object) HTTP Method별로 or Request, Response 별로 받아올 필드값(Request)과 보내줄 필드값(Response)을 잘 생각해서 필드값 설정 Mapstruct로 자동매핑이 어려운 필드의 경우 서비스클래스에서 비즈니스로직으로 처리하자. DTO 클래스 = 요청 데이터를 하나의 객체로 전달받는 역할 DTO를 적용하기 전엔 요청데이터를 @RequestParam을 통해 일일이 받았지만, 데이터가 많아질수록 @RequestParam의 개수도 많아질 것이다. DTO 클래스를 적용함으로써 코드의 간결성을 충족시킬 수 있다. DTO를 쓰는 가중 중요한 이유는 HTTP 요청의 수를 줄여 비용절감을 하는 것 아래에서 볼 예시는 DTO, 데이터 유효성 검증을..

Spring MVC & Rest API & Servlet
📘 Backend/Spring2023. 4. 2. 12:11Spring MVC & Rest API & Servlet

📘Spring Web MVC Spring의 모듈중 하나로 Suvlet API를 기반으로 웹계층을 담당 클라이언트의 요청을 편리하게 처리해주는 프레임워크 서블릿(Servlet)이란? 서블릿에 대해서는 ‘Spring Framework을 배워야 하는 이유’ 챕터에서 잠깐 언급을 한적이 있다. 서블릿은 클라이언트의 요청을 처리하도록 특정 규약에 맞추어서 Java 코드로 작성하는 클래스 파일이다. 그리고 아파치 톰캣(Apache Tomcat)은 이러한 서블릿들이 웹 애플리케이션으로 실행이 되도록 해주는 서블릿 컨테이너(Servlet Container) 중 하나임. Model Spring MVC 에서 'M' 에 해당 처리한 작업의 결과 데이터를 의미함 View Spring MVC 에서 'V&#..

AOP (Aspect Oriented Programming)
📘 Backend/Spring2023. 4. 2. 10:32AOP (Aspect Oriented Programming)

📘 AOP (Aspect Oriented Programming) 란? 어플리케이션에 필요한 기능 중 공통적으로 적용되는 공통 기능에 대한 관심과 관련됨 공통관심사항 어플리케이션 전반에 걸쳐 공통으로 사용되는 기능들 핵심관심사항 어플리케이션의 주 목적을 달성하기 위한 핵심 로직에 대한 관심사 커피 주문 어플리케이션 예시 핵심관심사항 = 메뉴등록,주문기능 공통관심사항 = 어플리케이션 보안 AOP가 필요한 이유 코드의 간결성 객체 지향 설계 원칙에 맞는 코드 구현 코드의 재사용성 핵심 포인트 AOP(Aspect Oriented Programming)는 관심 지향 프로그래밍이다. AOP에서 의미하는 Aspect는 애플리케이션의 공통 관심사를 의미한다. 애플리케이션의 공통 관심사는 비즈니스 로직을 제외한 애플리케..

Container Config & Component Scan
📘 Backend/Spring2023. 4. 2. 10:15Container Config & Component Scan

📘 Container Config 가장 중요한 Annotation 2가지 @Configuration @Bean Method가 Spring Container에서 관리할 새 객체를 인스턴스화, 구성 및 초기화 하는걸 나타내는데 사용됨 AnnotationConfigApplicationContext 를 사용하여 스프링 컨테이너를 인스턴스화 하는 방법 ApplicationContext 구현은 아래와 같은 Annotation이 달린 클래스로 파라미터 전달 받음 @Configuration 클래스 @Component 클래스 JSR-330 Metadata @Configuration 클래스가 입력으로 제공되면 @Configuration 클래스 자체가 Bean 정의로 등록되고 클래스 내에서 선언된 모든 @Bean 메소드도 ..

image