250x250
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- HttpServletResponse
- 코딩테스트
- 추상클래스
- 의존관계
- 오버라이딩
- 싱글톤
- objecterror
- http 메시지 컨버터
- 서블릿
- 인터페이스
- 다익스트라
- fielderror
- DI
- 김영한
- 예외와 트랜잭션 커밋
- 프록시
- @configuration
- 오블완
- 티스토리챌린지
- 코드트리
- 코드트리조별과제
- java
- 스프링
- 프로그래머스
- 테스트코드
- equals()
- html form
- 참조변수
- 백준
- 스프링컨테이너
Archives
- Today
- Total
minOS
예외와 트랜잭션 커밋,롤백-기본 본문
728x90
예외와 트랜잭션 커밋,롤백
package com.example.springtx.exception; import lombok.extern.slf4j.Slf4j; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.transaction.annotation.Transactional; @SpringBootTest public class RollbackTest { @Autowired RollbackService rollbackService; @Test void runtimeException() { Assertions.assertThatThrownBy(()->rollbackService.runtimeException()) .isInstanceOf(RuntimeException.class); } @Test void checkedException(){ Assertions.assertThatThrownBy(()->rollbackService.checkedException()) .isInstanceOf(MyException.class); } @Test void rollbackFor(){ Assertions.assertThatThrownBy(()->rollbackService.rollbackFor()) .isInstanceOf(MyException.class); } @TestConfiguration static class RollbackTesConfig { @Bean RollbackService rollbackService() { return new RollbackService(); } } @Slf4j static class RollbackService { // 런타임 예외 발생 : 롤백 @Transactional public void runtimeException() { log.info("call runtimeException"); throw new RuntimeException(); } // 체크 예외 발생 : 커밋 @Transactional public void checkedException() throws MyException { log.info("call checkedExcption"); throw new MyException(); } // 체크 예외 rollbackFor 지정 : 롤백 @Transactional(rollbackFor = MyException.class) public void rollbackFor() throws MyException { log.info("call checkedExcption"); throw new MyException(); } } static class MyException extends Exception { } }
런타임 예외 테스트 -> 롤백
체크 예외 테스트 -> 커밋
체크 예외를 강제로 롤백 -> 롤백
728x90
'TIL > 김영한의 스프링 DB 2편' 카테고리의 다른 글
| 예외와 트랜잭션 커밋,롤백-활용 (0) | 2025.03.03 |
|---|---|
| 트랜잭션 AOP 주의사항 - 프록시 내부 호출 (0) | 2025.03.02 |


