0. 서론 동시성을 제어하는 방법은 각 상황에 따라 여러 가지가 존재합니다. 1. Java Application Level Synchronized Atomic ReentrantLock ConcurrentHashMap 2. Database Level Pessismistic Lock Optimistic Lock Named Lock 3. 분산 시스템 Redis Zookeeper 이번 글에서는 Database Level 의 Lock을 Spring JPA 환경에서 어떻게 사용할 수 있는지 알아보도록 하겠습니다. 들어가기에 앞서 공통으로 사용될 코드들을 먼저 작성해 보겠습니다. 재고의 정보를 저장할 간단한 Entity 입니다. 재고의 양을 quantity에 저장하고 있으며, decre..
Spring Boot에서 Dependency Injection(DI)을 해주기 위해서 @RequiredArgsConstructor를 주로 사용하곤 합니다. Dependency Injection 이 어떠한 과정을 통해서 이루어지는 것인지 디버깅을 통해서 알아보도록 하겠습니다. productService 라는 serivce 클래스에 productRepository, wishClient 2개의 repository를 주입해 보겠습니다. 들어가기에 앞서, 바로 코드를 보면 과정이 길고 복잡하기에 흐름을 놓칠 수 있다고 생각되어 사용되는 클래스와 메서드들을 먼저 정리해 보았습니다. (1번에서 설명한 코드가 2번에서 사용되는 형태로 진행됩니다.) 1. 목차 및 순서 (Interface) [BeanUtils.java]..