본문 바로가기

SpringBoot22

Spring Batch MultiThread 병렬 처리 시 LazyInitializationException 발생 원인과 해결 과정(1) 배경 상황 Spring Batch MultiThread 환경에서 ItemReader에서는 @OneToMany(fetch = FetchType.LAZY)로 설정된 단방향 연관관계의 "One" 엔티티만 조회했습니다.ItemProcessor 단계에서 해당 연관 엔티티의 데이터에 접근하려 하자 LazyInitializationException 발생하였습니다.# 기본적인 chunk 기반 Spring Batch 프로세스를 이해하고 있어야 함## ItemReader의 구현체로 JpaPagingItemReader 사용## Single Thread로 작업 처리 시 해당 예외는 발생하지 않았으나, MultiThread 로 처리 시에만 발생 우선 LazyInitializationException은 어떤 오류인가?영속성 컨.. 2024. 12. 19.
SpringSecurity 순환 참조(circular references) 발생 스프링 순환 참조란?서로 다른 빈들이 서로 참조를 맞물리게 주입되면서 발생하는 현상스프링은 순환 참조 관계에 있는 빈들 중 어떤 빈을 먼저 생성해야 할지 결정할 수 없게 되는 상황이다.  문제 발생시큐리티를 적용하고 비즈니스 로직이 실행이 아닌 애플리케이션 구동 시 아래와 같은 에러가 발생하였다.The dependencies of some of the beans in the application context form a cycle:┌─────┐| securityConfig defined in file [C:\Users\sungh\IdeaProjects\football\build\classes\java\main\com\sunghyun\football\config\SecurityConfig.class]↑.. 2024. 9. 11.
@Valid MethodArgumentNotValidException 처리 개요개인 프로젝트에서 Exception 처리는 @RestControllerAdvice와 @ExceptionHandler를 통하여 Exception을 한 곳에서 통합하여 처리합니다.이 때, 요청받은 입력값에 대한 검증은 @Valid 를 사용하여 합니다.@Valid에 의해 발생되는 Exception은 MethodArgumentNotValidException이다.해당 예외 처리를 진행하면서 겪은 상황과 해결 과정을 설명하려 한다. @ExceptionHandler를 통한 예외 처리다른 Exception들과 마찬가지로 @ExceptionHandler로 잡아 처리하도록 하였다. @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(MethodArgumen.. 2024. 8. 23.
Spring Annotation 활용기 내 프로젝트에선 유저 도메인의 다양한 필드들을 수정할 수 있다.Restful API에선 보통 PUT /도메인이름/{no} 를 통해 수정이 이루어진다. 이 때, 수정요청은 크게 아래 두가지 케이스 존재한다.그 중 case2와 추가조건(조건1,2) 에 해당하는 개발을 진행해본다.case1) 엔티티의 모든 필드에 데이터 넣어 요청case2) 모든 필드 중 특정 필드만 데이터 넣어서 요청        더하여 특정 필드엔 두 가지 조건이 존재한다.            조건 1. 특정 대상 필드만 업데이트 대상            조건 2. 특정 대상 필드에 null 인입 시 경우에 따라 null로 업데이트 및 기존 데이터 유지 UserEntity우선 userPwd, gender, tel 필드들은 모두 업데이트 대.. 2024. 5. 31.