SpringBoot22 @TransactionalEventListener가 기대한 대로 동작하지 않은 이유와 해결 과정 https://gaudy-spade-563.notion.site/TransactionalEventListener-239874b4360980ef85c2e48adf063e18?pvs=74 2025. 8. 1. Spring Batch MultiThread 병렬 처리 시 LazyInitializationException 발생 원인과 해결 과정(2) 이번 장에선 해결 과정에 대해 설명한다. 앞선 장에서 설명한 발생 원인을 간단하게 설명하면 아래와 같다.JpaPagingItemReader를 모든 스레드가 공유하며 내부적으로 사용하는 EntityManager 또한 공유되고 결론적으론 영속성 컨텍스트를 공유한다. 여러 Chunk가 서로 다른 스레드에서 동시에 실행되는데, 이 때, JpaPagingItemReader.doReadPage 메소드 내부 영속성 컨텍스트 초기화 로직으로 인해 다른 스레드의 영속성 컨텍스트까지 영향을 받아 Lazy로딩 시 LazyInitializationException 발생한다. 기존 에러 발생한 코드들을 본다.@Entitypublic class FreeSubNotiEntity { @Id @GeneratedValue(.. 2025. 6. 20. Spring Batch MultiThread 병렬 처리 시 특정 item이 n번 Process되는 이슈와 이유 Spring Batch Multi Thread를 통하여 작업 처리 도중 이상하게 특정 item들을 ItemProcessor단계에서 여러 번 호출하여 처리하는 이슈가 발생하였다. 이에 대한 원인과 해결책을 찾아보도록 하였다. 우선 전체 코드를 확인해본다.@Slf4j@Configuration@RequiredArgsConstructorpublic class FreeSubNotiRegBatchMultiThreadConfig { private final EntityManagerFactory entityManagerFactory; private final int chunkSize=4; private final FootBallOpenFeignClient footBallOpenFeignClient; .. 2025. 5. 19. Spring Batch Partitioning에서 Job이 끝나지 않는다면 의심해보자 Spring Batch Partitioning을 통한 병렬 처리 작업 시 특정 Worker Step은 정상 종료되었으나 그 외 다른 Worker Step은 종료되지 않아 job이 끝나지 않는 케이스가 발생하였다.또한 어떠한 Exception도 로그로 찍고 있지 않고 있어 원인을 찾는데 애를 먹었다. 전체 코드(필요코드 외 생략)@Slf4j@Configuration@RequiredArgsConstructorpublic class FreeSubNotiBatchPartitionConfig { private final EntityManagerFactory entityManagerFactory; private final int chunkSize=5; private final TaskExecutor.. 2025. 1. 5. 이전 1 2 3 4 ··· 6 다음