스프링에서는 @Transactional 어노테이션을 사용하면, 아래 이미지처럼 어노테이션이 붙은 클래스를 래핑한 클래스를 만들어서 실행하게 된다. (래핑한 클래스에는 해당 메서드 트랜잭션으로 처리하기 위한 로직이 들어가는 듯 하다.)
@Transactional
synchronized public void decrease(Long id, Long quantity){
Stock stock = stockRepository.findById(id).orElseThrow();
stock.decrease(quantity);
stockRepository.saveAndFlush(stock);
}
'스프링 관련 > 스프링 프레임워크' 카테고리의 다른 글
다이나믹 프록시 (mockito) (0) | 2022.12.20 |
---|---|
@RestControllerAdvice, @ExceptionHandler(RuntimeException.class) 이용한 예외처리 분리 (0) | 2022.11.20 |
API 만들 때 생길 수 있는 문제 (컬렉션 조회 최적화) (0) | 2022.08.28 |
API 만들 때 생길 수 있는 문제 (지연 로딩과 조회 성능 최적화) (0) | 2022.08.28 |
springboot test data.sql 넣는 방법 (0) | 2022.08.25 |
댓글