전체 글

함께 성장하는 개발자
JPA

[JPA] 양방향 연관 관계와 무한 참조 문제: 원인과 해결 방법

0. 문제 상황 - 무한참조 문제 발생 문제 상황 설명에 앞서 도메인 설명을 간략하게 하겠습니다. 저는 출석부 서비스 "체쿠리"를 개발 중입니다.회원은 N 개의 출석부를 가질 수 있습니다.출석부는 N 명의 회원을 가질 수 있습니다.출석부를 여러 명의 선생님이 함께 관리하는 시스템인거죠. 그리고 출석부는 사용 가능 요일( AttendanceDays )이 있습니다.1개의 출석부는 [월, 화, 수, 목, 금 ] 등 1..N 개의 AttendanceDays 가 있습니다. 문제는 여기서 발생합니다. 회원이 가진 출석부를 조회하는 API를 통해서AttendanceBook, AttendanceDays 를 함께 호출했더니 아래와 같은 결과가 발생했습니다. AttendanceBook, AttendanceDays 가 서로..

Spring

[Spring] GlobalExceptionHandler 구현하기

0. 배경지식이 글을 이해하기 위해 필요한 간단한 기본 지식을 설명 드리겠습니다. 백엔드 개발자에게 예외 처리란 중요한 작업 중 하나입니다.서비스 운영 시에는 예외를 로깅하고 예외를 가공해서 사용자에게 필요한 정보만을 노출하는 것이 중요합니다. 이러한 예외 처리를 Spring 은 다양한 기능으로 추상화 해 개발자의 예외 처리 어려움을 덜어줍니다.Spring 은 예외 처리를 위해 기본적으로 3 가지의 ExceptionResolver 를 제공합니다. ExceptionHandlerExceptionResolverResponseStatusExceptionResolverDefaultHandlerExceptionResolver이 ExceptionResolver 가 동작하는 순서는 1 -> 2 -> 3 입니다.즉 Ex..

Spring

[Spring] Bean Validation 이란 ?

0. 표준화 된 Validation 이 필요한 이유 먼저 Validation 기능이 왜 필요한지 아래의 사진을 봅시다. 만약 공통화된 Validation 기능이 없다면 어떻게 될까요 ?위의 그림 처럼 각각의 계층에서 반복적으로 Custom Validation 을 진행해야 할 겁니다. 하지만 개발자들이 누구입니까 ?게으르기 위해 성실한 사람들 아니겠습니까?이 반복적인 Custom Validation 을 제거하기 위해서 표준화된 Validation 기능이 필요했습니다. 그리고 표준화된 Validation 기능을 적용하면 아래의 그림처럼 되는 것이죠. 도메인 모델을 정의하고 도메인 모델에 Validation을 적용하게 되면 각각의 계층에서 불필요한 Validation 기능을 삭제할 수 있게 됩니다.그렇다면 B..

Spring Security

[Spring] OAuth2.0 Client + JWT 로그인 Unauthorized, AuthenticationEntryPoint 오류 해결

1. 문제 상황JWT 로그인 시에 토큰 인증에 실패한 경우 401 에러를 리턴하기 위해서 AuthenticationEntryPoint 을 구현했다.그런데 localhost:8080/login 에 접속할 때도 Unauthorized 오류가 발생했다. 정말 이게 무슨 상황인가 싶다 ... 분명 잘 됐었는데.. 갑자기 문득 생각나는 이 짤 ..  2. 원인잘 동작하던 친구가 401 에러 처리를 위해 AuthenticationEntryPoint 추가한 후 부터 동작을 하지 않는다. 아래는 내가 작성한 코드이다.2-1. AuthenticationEntryPoint Code@Component@Slf4jpublic class JwtAuthenticationEntryPoint implements Authenticati..

Spring Security

Spring Security, OAuth2.0 Client, JWT 로그인 구현하기 - 2

0. 지난 내용저번 포스트에서 OAuth2.0 Client 의 기능이 뭔지어떻게 OAuth 를 간단하게 구현할 수 있는지 알아 보았다.이번에는 OAuth 로그인 이후의 과정을 알아보자 !  1. 이번 목표저번 포스트에서 OAuth 로그인을 통해 유저 정보를 받아 왔다.이 정보를 이용해서 우리 서버와 계속 통신할 수 있도록 JWT 토큰을 발급해보자 JWT 가 왜 필요한지 간단하게 설명하자면HTTP, HTTP 통신을 기반으로 하는 REST API 는 무상태성 통신을 지향하기 때문에매 요청마다 서버는 클라이언트가 누구인지 알 수 없다.이러한 단점을 해결하고 각 요청마다 요청한 사람이 누구인지 인증하기 위해 JWT, Session 등의 기술을 사용한다. 그 중에서 이번에는 보편적으로 이용되는 JWT 토큰 방식을..

후뿡이
개발자 '왜?'길 인생