SPRING

    Custom Exception 활용법

    작성 이유Exception Handler 를 통한 예외 처리 작업을 하며 익혔던 예외 처리 방법을 기록하기 위해 작성하게 되었다. Exception Handler 를 통한 예외 처리customException 패키지에 추상 클래스인 GlobalException 과 GlobalException 클래스를 상속받는 두 개의 Custom Exception 클래스가 있다. ErrorResponse 클래스는 Exception Handler 를 통해 클라이언트로 반환하는 정보를 담고 있는 클래스. 간단한 게시글 단건 조회 Serivce 로직을 확인해보자. 이상한 게시글 아이디로 게시글을 찾는다면 IllegalArgumentException 이 발생하도록 되어있다. @Service public class PostSer..

    [Spring Security] Authentication 인증 처리 과정 알아보기

    작성 이유 지금까지 Spring Security 프레임워크를 사용하지 않고 로그인, 인증, 인가를 구현했었다. 상당히 어려웠었는데, Spring Security 를 학습하면서 Spring Security 가 얼마나 잘 짜여진 보안 / 인증관련 프레임워크인지 알게됐고, 복기하기 위해 작성하게 되었다. 기록 시작 ! Authentication ? 사전적 의미로 Authentication 은 인증이라는 의미를 가지고있다. 애플리케이션의 특정 자원에 접근하기 위해선 권한이 있어야하고, 사용자는 권한을 얻기 위해 인증 정보를 확인받아야한다. 최종적으로 인증이 완료되면 Authentication 객체에는 유저 정보 + 권한 정보가 담겨져있는 상태가 되는데, 이건 아래에서 좀 더 적어보도록 하고.. 아래 이미지는 F..

    DTO 반환에 대해

    작성 이유 예전에 스프링, JPA 학습을 하며 클라이언트 응답 시 Entity 가 아닌 DTO 를 반환하는 것에 대해 알게되었다. 프로젝트를 진행하면서, 영한님 강의를 들으면서 그리고 기술 면접을 준비하면서 내가 이 부분에 대해 얼만큼 잘 알고 있는가 ? 를 되돌아보게 되었고, 정리를 좀 해야겠다 싶어서 작성하게 되었다. DTO 는 왜 사용될까 먼저 DTO 의 정의는 무엇일까 ? DTO 는 Data Transfer Object 의 약자로, 말 그대로 데이터 전송 객체라는 의미를 가지고 있다. 그림과 같은 각 계층에서 사용되며 , 특수한 로직이 없는 순수한 데이터 객체이다. 클라이언트와 Rest API 통신을 할 때 우리는 응답으로 Entity 가 아닌 DTO 를 응답해주는데, 내가 정리한 바로는 아래의 ..

    [Spring] GitHub OAuth2.0 구현하기 (웹 버전)

    소셜 로그인 서비스를 구현하기 위해 GitHub API에서 제공하는 OAuth2.0 을 스프링 시큐리티 없이 구현해보려고 한다. ☺️ 기록 시작 ~ 신규 OAuth API 등록하기 가장 먼저 할 일은, GitHub 에 접속하고 Setting -> Developer settings -> oAuth App -> new Oauth app 버튼을 클릭해서 나의 OAuth App 을 등록해야 한다. 버튼을 클릭하면 어려가지 정보를 작성핼 수 있는데, 필수 칸은 무조건 적어줘야 한다. 1. Application name (필수) - 원하는 어플리케이션 이름을 적어주면 된다. 2. Homepage URL (필수) - 개발하는 웹 페이지의 홈페이지 주소를 적어준다. 3. Application description (생..

    Spring @Validation 을 통한 검증, 예외처리 도전기

    첫 팀 프로젝트에서 검증과 예외처리를 도전해봤는데, 엄청 중요한 내용이라고 생각해서 까먹기 전에 포스팅으로 남겨놓기 위해 글을 작성해보려고 한다 ☺️ 검증이 필요하다고 생각한 객체 클라이언트에서 카드 수정 요청이 왔다고 생각해보자. 요구 사항으로는 Title 은 30자 이내, Content 는 500자 이내의 데이터만을 받을 수 있어야 한다. 이런 요구사항도 물론이고, Title 이나 Content 에 데이터가 없는 채로 넘어오는 경우에서 검증이 필요하다고 생각했다. package com.todolist.domain.dto; import lombok.Getter; @Getter public class CardPatchDto { private final String cardTitle; private fin..