분류 전체보기4 스프링 부트 예외처리 방식 Spring에서 클라이언트로부터 요청이 들어오면 어떻게 처리될까요? 일반적인 요청의 경우 아래와 같은 흐름으로 컨트롤러에 도달하고, 응답은 반대로 거슬러갑니다. 클라이언트(요청) -> WAS -> 필터 -> 서블릿 -> 인터셉터 -> 컨트롤러 기본 예외 처리 방식 스프링부트를 공부하다보면 흔히 WhiteLabel 페이지를 한번쯤은 보게 됩니다. 이 페이지는 에러가 발생했을 때 보여줄 수 있는 페이지가 없는 경우 스프링부트에서 기본적으로 제공하는 view를 의미합니다. 스프링부트에서 예외처리를 위해 기본적으로 등록하는 빈들은 ErrorMvcAutoConfiguration에서 확인할 수 있습니다. WhiteLabel에 처리를 위한 빈은 WhitelabelErrorViewConfiguration에서 확인할 수.. 2023. 12. 9. express-session 쿠키 설정이 안되는 이슈 최근 express와 함께 express-session을 사용하다가 생긴 쿠키가 발행되지 않는 이슈를 정리해보려고 합니다. 로컬 환경에선 express-session을 통해 발급된 쿠키를 Set-Cookie 헤더에 들어가며 잘 설정되고 있었지만, 개발환경에 배포하는 경우에 쿠키가 제대로 설정되지 않았습니다. 로컬과 개발 서버에서는 secure 설정과 도메인, same-site 정도의 차이가 있었습니다. 하지만 이런 경우, 대부분 쿠키가 헤더에 설정은 되지만 브라우저가 쿠키를 무시하거나 보내지 않는 문제였습니다. 하지만 이번 경우에는 Set-Cookie 헤더가 설정되지 않는 문제였습니다. express-session 코드를 살펴보면 아래와 같은 부분을 확인할 수 있었습니다. // express-sessio.. 2023. 10. 22. MySQL 과 PostgreSQL GroupBy 차이 최근 사이드 프로젝트를 진행하면서 MySQL을 사용하고 있는데요. 당연하게 PostgreSQL을 주로 사용하다보니 이런 식으로 groupBy를 할 수 없어라고 생각하고 쿼리를 작게 나누었었는데, 테스트를 해보다 보니 MySQL에서는 문제없이 동작하는 것을 보고 차이를 정리해놓으려고 합니다. 예제 테이블 간단하게 테이블 구조를 확인해보면 아래와 같습니다. Slot이 pictureId를 nullable하게 가지고 있고, PictureTagRelation이 pictureId와 pictureTagId를 가지고 있는 구조입니다. 쿼리 원했던 쿼리는 아래와 같습니다. 앨범에 존재하는 모든 Slot을 조회하는데 Slot이 Picture를 가지고 있다면, Picture 데이터를 가져오는 구조였습니다. 이때, Pictu.. 2023. 10. 22. QueryDSL Subquery QueryDSL SubQuery 한계 우리가 흔히 이야기하는 QueryDSL은 querydsl-jpa를 의미합니다. querydsl-jpa를 사용하는 코드를 보면 다음과 같이 JpaQueryFactory를 사용합니다. @Repository public class AlbumRepositoryImpl implements AlbumRepository { private final JPAQueryFactory jpaQueryFactory; public AlbumRepositoryImpl(JPAQueryFactory jpaQueryFactory) { this.jpaQueryFactory = jpaQueryFactory; } public Optional findById(Long id) { return Optional.. 2023. 10. 15. 이전 1 다음