inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

장애를 허용하는 견고한 시스템 만들기

보상 트랜잭션 (Compensating Transaction) 패턴

@Transactional선언 메서드 정상동작하는건가요?

해결된 질문

148

후아휴

작성한 질문수 4

1

보상 트랜잭션 예제 소스에 createOrderAndStockDecreaseEvent 메서드에 Transactional선언되어 있고 주석에 하나의 트랜잭션으로 묶는다고 명시하신거 보면 트랜잭션되게 하시려고 한거 같은데요
근데 자기호출로 프록시 안타서 트랜잭션으로 안묶이는데 혹시 예제라서 그냥 해놓으신건가요?

spring-boot kafka resilience4j data-consistency transaction

답변 2

1

이준형(Foo)

후아휴님 안녕하세요!

해당 내용은 제가 예제 코드를 제미나이로 생성하면서 의도와 다르게 작성된 부분입니다!

(Self Invocation이 아니라 public 되어 있어 외부 호출을 가정하여 이렇게 작성된듯합니다)

이 부분은 강의 흐름에서 주요하게 소개되는 내용은 아니지만, 혼란을 드릴 수도 있는 내용이라고 생각되어 강의 예제 코드에 주석으로 보충 설명과 이 질문글 링크를 남겨놨습니다.

제보해주셔서 감사하고, 수강에 불편을 드려서 죄송합니다. (_ _)

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

후아휴님, 질문 주신 내용은 보상 트랜잭션 예제에서 @Transactional이 제대로 동작하는지에 대한 문제인데요. 이 문제는 스프링 프레임워크에서 트랜잭션이 AOP(Aspect Oriented Programming)를 통해 프록시 기반으로 작동하기 때문에 발생할 수 있는 일반적인 문제 중 하나입니다.

  1. 자기 호출 문제: @Transactional은 메서드가 외부에서 호출될 때에만 프록시를 통해 트랜잭션이 관리됩니다. 내부 메서드 호출(자기 호출)일 경우, 트랜잭션 프록시가 만들어지지 않으므로 트랜잭션이 적용되지 않습니다.

  2. 예시 코드의 의도: 예제에서는 코드의 구조를 간단하게 설명하기 위해 @Transactional을 직접적인 메서드에 사용했을 수 있습니다. 하지만, 실제 작동을 기대하려면 트랜잭션이 적용될 수 있도록 외부에서 메서드를 호출해야 합니다.

이와 관련하여 더 자세한 이해를 돕기 위해 유용한 URL을 공유합니다:

  • 스프링 트랜잭션 자기 호출 문제: 기존에 유사한 질문이 있었던 스레드입니다. 이 링크에서 질문자와 강사님의 대화가 진행된 방식과 트랜잭션 적용의 핵심을 이해할 수 있습니다.

현재 베타 기능으로 제공되는 답변으로서, 설명이 만족스럽지 않을 수 있어 양해 부탁드립니다. 추가적으로 질문이 있으시다면, 이어서 질문해 주시면 강사님께서 직접 더 상세히 안내해 주실 것입니다. 🙏

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

서비스에서와 컨트롤러의 @Vaild 적용 차이에 대해서

0

9

1

Apple Silicon에서 CI 빌드 이미지가 재시작을 반복할 때 (jib platforms 수정)

1

19

1

제공된 스크립트를 어디서 받을 수 있나요?

0

13

0

해결했습니다

0

15

1

copilot-instruction.md

0

9

0

미션 제출 방식 건의

0

13

0

강의 슬라이드 자료

1

26

2

트랜잭션 내 Redis I/O 에 대한 궁금한점

1

17

1

미션 진행 방식에 대한 질문입니다.

0

29

1

지금 강의가 어려우신분 추천드립니다.

0

47

1

getOrCreate / Unique? 멱등 처리 질문

1

57

2

기존의 완성된 CRUD의 Build.gradle에 security관련 dependency를 추가하면 문제가 생깁니다.

0

60

2

WebFlux & Web MVC 혼용해서 사용했을 때 스레드에 대한 질문

0

60

1

안녕하세요 강사님 질문 있습니다.

0

111

1

bitnami/kafka 말고 다른 이미지를 사용하는 방법 알려주세요.

0

290

2

카프카 질문

1

174

2

안녕하세요. 타임아웃 시간에 관하여 질문있습니다.

1

184

2

분산 시스템 인증/인가 관련 질문 ..

1

136

2

안녕하세요 주문처리에 관하여 질문있습니다 ㅠ ㅁ ㅜ

2

237

2

[데이터 버저닝을 활용한 멱등성 처리] 멱등성 보장을 위한 version 비교 질문

1

174

2

데이터 버저닝 질문

1

175

2

복제 관련 질문입니다!

2

157

2

영상 편집이 잘못된 것 같아요. (순서가 중간에 계속 바뀜)

0

136

3

혹시 강의자료랑 강의 안에 나오는 pdf와 같은거가요?

1

145

2