Spring Session Redis에서 중복 로그인이 막히지 않는 원인 (SessionRegistry)
Spring Session Redis에서 중복 로그인이 막히지 않은 원인과 SpringSessionBackedSessionRegistry로 해결한 방법, 밀려난 세션을 Redis에서 직접 지운 내용을 정리합니다.
Spring Session Redis에서 중복 로그인이 막히지 않은 원인과 SpringSessionBackedSessionRegistry로 해결한 방법, 밀려난 세션을 Redis에서 직접 지운 내용을 정리합니다.
실무 프로젝트 전반에 REQUIRES_NEW가 걸려 있던 원인을 프록시 패턴과 롤백 시점, 컨트롤러에 걸린 AOP 트랜잭션 설정에서 찾아 분석한 과정을 정리합니다.
@Component에 붙은 Target, Retention 같은 메타 어노테이션의 의미와, @Service처럼 @Component를 품은 어노테이션을 Spring이 ClassPathBeanDefinitionScanner의 doScan으로 찾아 빈으로 등록하는 과정을 정리합니다.
같은 서비스 안에서 @Transactional 메서드를 자기 호출해 롤백이 안 되는 문제를 실제 운영 코드에서 겪고, 트랜잭션 이름을 직접 확인하며 별도 서비스로 분리해 해결한 과정을 기록합니다.
같은 서비스 안에서 @Transactional 메서드를 자기 호출하면 프록시를 거치지 않아 REQUIRES_NEW가 적용되지 않고 일괄 롤백되는 원인과, 서비스 분리로 해결하는 방법을 흐름도와 함께 정리합니다.
@Transactional 안에서 try ~ catch로 예외를 잡으면 롤백이 동작하지 않는 원인을 TransactionAspectSupport와 rollbackOn 내부 동작으로 분석하고, catch에서 Unchecked Exception을 다시 던지는 해결 방법을 정리합니다.
Bean Validation의 @NotNull, @NotBlank, @Min, @Size, @Pattern 같은 검증 어노테이션 종류와, @Valid로 요청 값을 검증하는 흐름과 사용 예시를 정리합니다.
Jackson의 @JsonIgnoreProperties로 특정 프로퍼티를 직렬화·역직렬화에서 제외하는 방법과, ignoreUnknown=true로 클래스에 없는 JSON 프로퍼티를 무시해 역직렬화 오류를 막는 방법을 정리합니다.
Spring이 제공하는 HTTP 클라이언트 RestTemplate의 특징과 주요 메서드를 정리하고, exchange()로 요청을 보내는 예시와 응답 상태에 따라 예외가 처리되는 흐름을 그림과 함께 설명합니다.
트랜잭션 매니저 빈이 여러 개 등록된 환경에서 테스트 코드가 NoUniqueBeanDefinitionException을 남긴 원인과, @Transactional에 트랜잭션 매니저 이름을 지정해 해결한 과정을 정리합니다.
트랜잭션의 ACID 성질과 @Transactional의 propagation, isolation, rollbackFor, noRollbackFor, timeout, readOnly 옵션을 예제 흐름도와 함께 정리합니다.
카테고리 캐시 작업을 하며 정리한 Ehcache 사용 방법으로, ehcache.xml 캐시 속성과 Spring Boot의 CacheManager 설정, @Cacheable로 조회 결과를 캐시하는 흐름을 그림과 함께 정리합니다.
같은 클래스 내부 호출에서 @Transactional이 적용되지 않는 self-invocation 문제의 원인과, REQUIRES_NEW 메서드를 하위 컴포넌트로 분리해 안전하게 쓰는 방법, 커넥션 점유 주의점을 정리합니다.
골든크로스·데드크로스 자동매매 프로젝트를 구성하며 Spring MVC의 Thread-per-Request 모델과 WebFlux의 이벤트 루프 모델을 흐름도로 비교하고, CPU·I/O 집약적 작업에서의 차이와 WebFlux를 선택한 이유를 정리합니다.