Spring
[Spring] HTTP Request, Response 내용을 logging 적용해보기
[Spring] HTTP Request, Response 내용을 logging 적용해보기
2023.05.17목표 - Spring Boot Application에서 HTTP Request, Response 내용에 대해서 logging을 적용해본다. 효과 - logging 적용을 통해 HTTP 요청마다 요청 전문과 응답 전문 내용 확인이 가능해진다. - logging을 통해 오류에 대한 디버깅과 원인 추적을 더욱 쉽고 빠르게 할 수 있다. 실무든 개인 프로젝트든 애플리케이션을 개발하거나 운용할 때 여러 에러를 마주하게 됩니다. 에러를 마주하게 되면 원인을 알아야 해결방법을 생각할 수 있기 때문에 에러 발생 원인을 찾는 것이 아주 중요합니다. 실제 업무하면서도 에러 발생 원인을 찾는데에 많은 시간을 할애하게 됩니다. 여러 단서들을 이곳 저곳에서 확인하고 원인을 추적해나가는데요. http request, respon..
[Spring] Filter 중복 호출되는 경우와 OncePerRequestFilter를 통한 처리
[Spring] Filter 중복 호출되는 경우와 OncePerRequestFilter를 통한 처리
2023.05.07목표 - 하나의 request에서 Filter의 중복 호출되는 사례들을 알아보자 - OncePerRequestFilter를 사용함으로써 Filter 중복 호출 방지 Spring Boot를 사용해 web application을 개발하다보면 Filter를 구현해서 적용하는 일이 반드시 생기게 됩니다. Filter를 사용하다보면 Filter가 중복 호출되는 경우가 발생하게 되는데요. 어떤 경우에 이런 Filter 중복 호출 현상이 발생하는지에 대해 알아보고 OncePerRequestFilter를 통해서 이러한 현상을 방지하는 것까지 정리해보려합니다. (참고로 예시 코드는 kotlin 입니다.) 📌 1. 기본적인 Filter 구성 class FirstFilter : Filter { companion object..
[Security] 인증, 인가 예외를 @ExceptionHandler로 적용해보기(ExceptionTranslationHandler)
[Security] 인증, 인가 예외를 @ExceptionHandler로 적용해보기(ExceptionTranslationHandler)
2023.01.20Spring Security에서 인증 및 인가 예외가 발생할 수 있는데 이를 Spring의 @ExceptionHandler로 적용해보는 과정을 정리해보고자 합니다. 해당 글을 이해하기 위해서는 기본적인 Spring Security filter 진행 순서와 과정, 메커니즘을 어느정도 알고 있어야 읽기에 수월할 것 같습니다. (그렇다고 어려운 내용도 아니고 쉽습니다.) 📌 1. 인증 과정에서의 인증 예외 처리 Spring Security에서 인증 과정을 처리해주는 인증 필터가 존재합니다. 예를 들어, 기본적인 form login 방식에서는 UsernamePasswordAuthenticationFilter가 있습니다. 그리고 custom한 인증 필터를 만들어서 적용해보고 싶다하면 여러가지 방식이 있겠지만 Us..
[JPA] Transactional과 쓰기지연 쿼리에 대한 간단한 이슈 정리(updatedAt 관련)
[JPA] Transactional과 쓰기지연 쿼리에 대한 간단한 이슈 정리(updatedAt 관련)
2022.12.23JPA를 사용하면서 마주했던 이슈에 대해서 기록하고자 블로그에 정리하게 되었습니다. A Entity가 있고 B Entity가 있는데 A Entity에 대한 내용을 수정하고 A Entity의 필드 값들을 B Entity에 담아서 DB에 insert 요청을 하기 위한 save 작업을 하는 내용이었습니다. 코드 상으로 보면 다음과 같습니다. @Transactional fun saveHistoryAfterCafeInfoUpdated(cafeId: Long, request: UpdateDto) { // 대상 cafe 조회 val cafe = cafeRepository.findByIdOrNull(cafeid) ?: throw RuntimeException("cafe not found") // cafe 내용 변경 c..
[JPA] Hibernate dialect와 H2 데이터베이스 호환 이슈
[JPA] Hibernate dialect와 H2 데이터베이스 호환 이슈
2022.11.22김영한님 JPA 강의 듣다가 hibernate.dialect내용을 바꿔서 코드 실행을 하는 부분이 있었는데 이 과정에 겪었던 에러 이슈와 처리했던 내용을 기억하고자 이 곳에 기록하게 되었습니다. 📌 문제 상황 jpa 관련 설정은 위의 내용과 같습니다. h2 database를 사용했기 때문에 h2 driver와 db dialect(방언)는 H2Dialect로 하였습니다. 이렇게 설정하고 jpa 코드 실행하면 아무 문제 없이 잘 수행합니다. 여기서 oracle 쿼리는 어떻게 적용이 되는지 보기 위해 dialect 설정을 Oracle12Dialect로 변경했는데요. 여기서 문제가 발생합니다. ddl-auto를 create로 설정한 상황에서 코드 실행하면 JPA Entity 내용대로 drop, create 순으..
[Spring Security] API 방식의 인증 프로세스 개발해보기(custom filter, provider 적용)
[Spring Security] API 방식의 인증 프로세스 개발해보기(custom filter, provider 적용)
2022.11.17저번 게시글에서 Spring Security의 기본 인증 방식인 form login 인증 방식의 간략한 프로세스를 정리해보았습니다. Spring Security의 인증 프로세스 정리(form login 인증 방식) Spring Security의 인증 프로세스 정리(form login 인증 방식) 개인 프로젝트 하면서 적용했던 내용을 정리해보는 글입니다. 이번 내용은 로그인(인증) 프로세스를 순수 Spring Security만을 가지고 개발해보았던 내용을 두 번에 나누어 정리해보고자 합니다. 이 beaniejoy.tistory.com 해당 게시글에서 정리했던 내용들을 토대로 이번에는 api 인증 방식에 대해서 Spring Security를 이용해 구현해보고자 합니다. api 방식의 인증 프로세스를 구현하기..