전체 글

전체 글

    [Validation] 데이터 검증, 비즈니스 로직 검증

    | Validation - 지난 번 스프링을 처음 배울 당시 아래와 같이 Validation에 대한 개념을 배웠었다. ✅ Validation은 유효성 검증을 말하며, 주로 HTTP Request에서 잘못된 내용을 검증할 때 사용한다. - 데이터 검증 : 필수 데이터 / 문자열 길이 및 숫자형 데이터 범위 / 이메일 및 신용카드 번호 등 형식 확인 - 비즈니스 검증 : 서비스 정책에 따라 데이터 검증 ✅ Validation 방식 1) Java Bean Validation : dto클래스 맴버에 Annotaion(ex. @NotBlank, @Size, @Email...)을 붙이는 방식 2) Spring validator 인터페이스 구현을 통한 validation ✅ Validation 주의사항 : Valid..

    [TEST] Controller Test에서 ObjectMapper 사용하기

    | ObjectMapper로 Json으로 파싱 - 방법 (1) 테스트 클래스 안에 @Autowired로 test-container의 ObjectMapper를 주입한다. (2) 테스트 메소드 안에 contentType과 content를 지정한다. contentType에 MediaType.APPLICATION_JSON을 지정하고, content에 object -> json형식의 string으로 반환하는 objectMapper의 writeValueAsString(Object value)를 쓴다. @Autowired ObjectMapper objectMapper; @Test void createXX() throws Exception { // given 생략 // then mockMvc.perform(post("..

    JAVA 유용한 타입 - Enum

    | Enum이란? - Enumeration Type : 열거체를 말한다. - 핵심 : 사용자 지정 타입이며 실제 값은 0,1,2,3... 순번으로 출력된다. - 부가 : 타입에 괄호()를 넣어 그 타입에 대해 설명할 수 있다. | Enum 문법 - 기본적으로 아래와 같이 열거하여 사용하는데 public enum AnimalType { CAT, DOG, HAMSTER, CHICKEN, SHEEP, LAMAR; } - 상수타입 옆에 괄호()를 넣어 상숫값을 명시할 수 있다. public enum AnimalType { CAT("포유류","고양이"), DOG("포유류","개"), HAMSTER("포유류","햄스터"), CHICKEN("조류","닭"), SHEEP("포유류","양"), LAMAR("포유류","라..

    JAVA 라이브러리 - Optional<T> 클래스

    | Optional 클래스란? - 자바에서 모든 객체는 Referece Type으로 nullable하다. * null이 발생할 수 있는 타입 > Referece Type의 객체는 null을 발생시킬 수 있다. -- NullPointerException - Optional은 객체를 nullable하게 쓸 수 있도록 하는 Wrapper class로, 객체 사용 시 null을 명시적으로 처리하게 한다. * 참고로 코틀린의 경우, nullable한 타입을 구분하는 코드가 별도로 존재한다. Optional은 주로 "결과 없음"을 명확하게 나타내야 하고, null을 사용하면 오류가 발생할 수 있는 메소드 반환 유형으로 사용된다. Optional 변수는 null일 수 없으며 항상 Optional 인스턴스를 가리켜야한..

    [스프링] Entity 객체를 생성 : 영속성의 개념 + 자동 Auditing

    [스프링] Entity 객체를 생성 : 영속성의 개념 + 자동 Auditing

    | 정리하게 된 계기 - 오늘 수업에서는 계좌 관련 프로그램을 만드는 걸 시작했고, 계좌 생성 API를 만들며, 사용자 및 계좌에 대한 Entity를 만들었었다. - 만들다보니, @Entity, @EntityListeners, @id, @Generated의 상위 패키지가 persistence로 되어 있는게 보였다. - 더불어, 객체 이벤트 발생 시간을 알려주는 @EntityListeners(AuditingEntityListener.class) 코드의 AuditingEntityListener.class로 가, 설명을 읽어보니, "이건 Entity에 persist 또는 update 이벤트가 발생하는 시간을 알려주는 일회성(stateless) 클래스이다" 라고 적혀있어, persist가 뭐지? 하는 생각을 하..

    [스프링] 개발을 시작하기 전에 - 요구 사항 분석, 기본 구조 잡기

    1. 프로젝트 생성 및 요구사항 분석 - 오늘 수업시간에서는 프로젝트 생성 및 요구사항 분석 + 설계 및 기본 구조 개발에 대해서 들었다. - 각 회사마다 분위기는 다 다르겠지만, 요구사항 분석 시엔 일반적으로 아래의 단계를 거친다고 한다. 1) 외부 고객 및 내부 고객의 의견에 따라 어떤 사업을 하겠다는 목표가 생기면, 2) 기획자가 기획안을 만들어 연관됨 팀들과 의견을 나눈 뒤 사용할 기술 및 주요 기능에 대해 보완한다. 3) 기획자의 기획안을 토대로 개발팀은 개발을 위한 기술 스택 및 구체적인 명세서를 작성한다. (1) 기술 스택이란 뭔가 - 위 3) 단계에서 "기술 스택"이라함은, - 어떤 프레임워크와 언어를 쓸 것인가 - 어떤 DB vendor를 쓰고 - 어떤 api를 사용할 것이며 - http..

    [스프링] 프로젝트 전 꼭 알아두면 좋은 것들

    [스프링] 프로젝트 전 꼭 알아두면 좋은 것들

    | 개요 - 수업 시간에 고객의 계좌 정보에 관한 프로그램을 샘플로 만들며 아래의 내용을 배우기로 했다. - 저작권상 내용을 여기에 담기는 좀 그래서 전반적인 개념에 추가적인 정보를 담아 스스로의 이해를 위해 정리해보려고 한다. - 강사님의 강의 흐름이 마치 현장 플젝을 해결하는 것 같이 느껴지는데, 이 흐름만 잘 기억해도, 차후 개인 프로젝트를 기획할 때 많은 도움이 될 것 같다. no 흐름 특징 0 개요 시스템 한 줄 소개 / 활용 기술 요약 / 프로젝트 엔터티 구조 안내 / 주요 제공 기능(API) - 분류 1 프로젝트 생성 및 의존성 추가 spring.io 또는 인텔리J를 통해 스프링 프로젝트 생성, 의존성 추가 * 어떤 기술을 쓸 건지에 따라 의존성은 달라질 수 있다. 2 Lombok Lombo..

    [스프링] 스프링 MVC - 예외처리

    | 예외처리 - 예외 : 프로그램이 예상하지 못한 상황을 만났을 때 오류를 처리하는 것 - 자바에서는 try-catch문 안에서 예외처리를 했었다. try { // 행동 } catch (Exception e) { log.error("cetian exception"); } - 스프링에서는 이러한 예외처리를 간편하게 할 수 있도록 하였다. | 스프링의 예외처리 (REST API) - 과거와는 달리 오늘날에는 프론트엔드와 백엔드 분업화가 잘 이루어져 있다. - 백엔드에서는 보통 Rest API를 사용해 컨트롤러 기반의 예외처리를 주로 한다. - 현장에서 예외처리를 할 때에는 enum과 예외객체를 통해 custom exception을 만들고, @RestControllerAdvice를 사용해서 예외처리를 한다. ..

    [스프링] 스프링 MVC - 필터, 인터셉터

    [스프링] 스프링 MVC - 필터, 인터셉터

    | MVC 구조로 보는 필터와 인터셉터 - 요청사항에 대해 필터와 인터셉터를 거친다 - 사용되는 메소드의 전반적인 흐름 init -> doFilter -> preHandler -> AOP -> postHandler -> afterCompletion -> doFilter -> destroy - 필터와 인터셉터와 AOP 필터 인터셉터 AOP 공통점 공통처리 기능 관련 웹의 URL주소나, 프로토콜 등과 관련 자바코드(Annotation, package) 위치 스프링 외부 스프링 내부 스프링 내부 특징 - 대부분의 공통사항 필터에서 처리 - low level 처리 가능 - sql injection, CSRF 등 해킹을 사전에 막는용도로 자주 사용한다. - Controller에 가기 전 공통 처리 - 실제 매핑된..

    [스프링] 스프링MVC - HTTP 요청 및 응답

    [스프링] 스프링MVC - HTTP 요청 및 응답

    | MVC - MVC란? Model + View + Controller 의 약자를 말하며, - 스프링은 내부적으로 Dispatcher가 있어, 어떤 요청이 있을 때마다 적절한 컨트롤러를 찾아 매핑한다고 했다. - 이때 말하는 요청이란, 사용자가 보내는 HTTP 요청을 말하며 오늘날 웹 환경은 일반적으로 REST 방식을 따른다. - REST는 URI의 자원에 고유한 이름-표현(ex. name, userId)-을 주어 자원의 상태 정보를 주고 받는 것으로, GET/POST/PUT/DELETE와 더불어 ?파라미터명=값 과 같이 자신만의 규칙을 갖고 있다. - 스프링에서는 HTTP 요청을 해석하기 위해 RestController를 사용하며, 해당 컨트롤러의 메소드와 매핑하기 위해, RequestMapping 또..