일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 우아한세미나
- AWS
- 스프링 부트
- JUnit5
- Spring Batch
- REDIS
- 레벨2
- JPA
- 의존성
- mock
- 우테코
- Docker
- 우아한테크코스
- 미션
- 프리코스
- AOP
- yml
- 코드리뷰
- Paging
- 프로그래머스
- HTTP
- 서블릿
- 자바
- 세션
- MSA
- 백준
- CircuitBreaker
- 트랜잭션
- 스프링부트
- Level2
- Today
- Total
목록롤백 (2)
늘
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bXkRl3/btrSCMaSUTH/dPkp7Y7j9ce5qD4lJep4Yk/img.png)
스프링의 application context는 Application Event를 제공해준다. 해당 이벤트를 사용할 때 기존 트랜잭션에서 커밋이 된 후에 이벤트를 처리할 때, Transaction의 Propagation을 Requires_new 나 @Asnyc로 주지 않으면 같은 트랜잭션으로 묶여서 정상적으로 이벤트가 발급되지 않는다. 따라서 이벤트에 Propagation.REQUIRES_NEW 옵션을 주어서 사용했는데 이때 Requires_new를 사용한다고 해도 상위 트랜잭션에서 예외를 잡아주지 않으면 예외가 전파되어서 상위 트랜잭션도 롤백이 된다. 따라서 try-catch로 잡아줘야 한다. 그런데.. 실제 event에 대해서 예외 테스트를 진행해줬는데 try-catch로 잡지 않아도 예외가 전파되지 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/4fjcc/btrPQdcrFZU/ILTCyL3P4D4bHACjnCFpkK/img.png)
이전의 게시글에서 필자의 서비스에서 테스트는 @Tansactional을 통한 롤백을 제거했다. 이후, 매번 테스트에서 아래의 사진처럼 DatabaseCleaner를 주입받아 반복적으로 @AfterEach로 테스트가 끝난 후, 롤백을 진행해 주었다. 최근에 우아한테크코스 리펙토링 미션을 진행하면서 해당 방식에 대해서 알게 되었다. 이후, Junit5의 공식 문서를 확인해봤고 해당 기술에 대해서 알게 되었다. BeforeAllCallback - @BeforeAll 적용된 메서드 전에 실행(가장 먼저 실행된다.) BeforeEachCallback - @BeforeEach 적용된 메서드전에 실행 BeforeTestExecutionCallback - 각 테스트가 실행되기 직전에 실행(@Before후에 실행된다.)..