전체 글

전체 글

    [Spring Security] Filter에서 JWT 예외 처리

    [Spring Security] Filter에서 JWT 예외 처리

    현 프로젝트에서는 Spring에서 제공하는 @ControllerAdvice 어노테이션을 사용하여 전역 예외 처리를 하고 있으며, @ExceptionHandler를 통해 각 Custom Exception에 상응하는 status code를 내려주고 있다. 하지만 Filter에서 발생하는 JWT 예외는 위와 같은 방법으로 처리할 수 없다! Why Filter와 @ControllerAdvice는 서로 다른 컨텍스트에서 동작한다. 위의 그림을 통해 볼 수 있듯이 Filter는 Spring Context의 앞단인 Servlet Context에서 관리되는 영역으로, Spring에서 제공하는 @ControllerAdvice와는 예외 처리 메커니즘이 분리되어 있다. 따라서 Filter에서 발생하는 예외는 전역 예외 처리..

    [GIT] Trunk-based development

    [GIT] Trunk-based development

    Git Branch 전략이라고 하면 Git-flow, Github-flow, Gitlab-flow 전략들을 떠올리나, 최근 영어로 검색했을 때 trunk-based development에 대한 글들과 feautrue-based development를 나눠서 비교하는 아티클들이 꽤나 많이 보였다. 새롭게 떠오르는 trunk-based 전략에 대해 간략히 살펴보고자 한다. Trunk-Based Development란 개발자가 핵심 trunk 또는 main branch와 같은 단일 브랜치에서 모든 작업을 수행하고 병합하는 버전 관리 방법 특징 짧은 개발 주기 개발자는 코드 변경 사항을 main branch에 바로 push 할 수 있다. 그렇기에 더 자주, 그리고 더 작은 단위로 코드를 변경할 수 있다. 빠른 ..

    [JAVA] 생성자 대신 정적 팩터리 메서드를 고려하라

    무의식적으로 사용하는 패턴의 장·단점을 이해하고 동료 개발자에게 설득력 있는 설명을 하기 위해 Effective Java 첫 장을 다시 들여다보았다. 나는 주로 Builder 패턴과 함께 Dto를 매개변수로 받아 Entity로 반환할 때 사용하였던 것 같다. 정적 팩터리 메서드 객체를 생성하는 메서드를 정적(static)으로 만들어서 객체 생성을 캡슐화 하는 메서드 장점 1. 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 반면, 정적 팩터리 메서드는 이름을 통해 반환될 객체의 특성을 묘사할 수 있다. 생성자는 하나의 시그니처로는 생성자를 하나만 만들 수 있다. 하지만 정적 팩터리 메서드는 시그니처가 같은 생성자가 여러개 필요할 경우 각..

    [Docker] executor failed running. exit code: 127

    [Docker] executor failed running. exit code: 127

    Docker를 사용해서 Jenkins를 띄우려고 하는데, 다른 개발자 분의 개발 환경에서는 Dockerfile이 정상적으로 build 되는 반면, 내 로컬에서는 에러가 났다. 에러 내용 => ERROR [2/5] RUN

    [JPA] @OneToOne, 일대일(1:1) 연관관계 매핑 시 주의할 점 (지연 로딩 이슈)

    [JPA] @OneToOne, 일대일(1:1) 연관관계 매핑 시 주의할 점 (지연 로딩 이슈)

    문제 JPA를 사용하며 테스트를 통해 실제 수행되는 쿼리를 수시로 체크하는데, 일대일(1:1) 양방향 연관관계를 지니는 테이블에서 FetchType.LAZY가 적용되지 않아 불필요한 쿼리가 호출되는 것을 발견하였다. 아래는 문제가 되는 SHELTER와 SHELTER_USER의 연관관계 다이어그램이다. SHELTER와 SHETLER는 1:1 양방향 연관관계로 매핑되어 있으며, 대상 테이블인 SHELTER_USER에 외래키를 두고 있다. 문제는 SHELTER를 조회 시 SHELTER_USER 테이블도 즉시 로딩되어 아래와 같이 쿼리가 두 번 호출된다. 2023-08-11T17:58:58.461+09:00 DEBUG 2272 --- [nio-8080-exec-3] org.hibernate.SQL : /* */..

    [Sentry] Exception Handler를 거치기 전 Sentry로 에러 전달 및 Exception 필터링 (Spring Boot)

    https://intothemaze.tistory.com/14 [Sentry] Spring Boot에 Sentry 적용하기 Sentry Sentry는 오픈소스 기반의 에러 트래킹 및 로깅 도구로, 애플리케이션에서 발생하는 버그, 예외, 성능 문제 등을 감지하고 이를 기록하여 개발자들에게 제공한다. 구독형인 클라우드 버전과 intothemaze.tistory.com https://intothemaze.tistory.com/15 [Sentry] Sentry Slack 연동 및 Logging 레벨 설정 (Spring Boot) 지난 포스팅과 연결 됩니다. https://intothemaze.tistory.com/14 [Sentry] Spring Boot에 Sentry 적용하기 Sentry Sentry는 오픈소..