작성
·
65
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
안녕하세요.
스프링 AOP는 스프링 컨테이너에서 등록된 빈들을 통해
DI가 되고 트랜잭션 프록시 객체를 생성하는 것은 완벽히 이해 했습니다.
근데 MemberServiceV3_3는 스프링 AOP를 쓰는데
강의처럼 Bean을 등록하기 전에 "정상 이체" 메소드는 정상 실행되고 "이체중 예외 발생"은 롤백이 일어나지 않아 실패하는건가요 ?
빈들을 등록하지 않았기 때문에 "정상 이체" 메소드도 커밋이 되지 않아야 된다고 생각하는데 이유가 궁금합니다 !!
답변 2
0
안녕하세요. 병훈님
도움을 드리고 싶은데, 질문이 잘 이해가 되지 않습니다.
정상 이체, 이체중 예외 발생 모두 빈들은 잘 등록되어 있습니다.
구체적으로 어떤 빈들을 등록하지 않아서 그렇다고 생각하시는지, 최대한 자세히 설명해주시겠어요?
참고로 여기서 예외가 발생하는 이유는 다름 로직 때문입니다. 이 로직을 호출할 때 "ex"라는 이름의 사용자로 호출하기 때문에 예외가 발생합니다.
private void validation(Member toMember) {
if (toMember.getMemberId().equals("ex")) {
throw new IllegalStateException("이체중 예외 발생");
}
}
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
병훈님의 질문을 검토한 결과, 직접적으로 동일한 상황을 설명하는 내용은 발견되지 않았으나, @Transactional
어노테이션의 사용과 관련된 이해를 돕는 정보를 가진 링크를 추천해 드립니다.
병훈님께서 언급한 “정상 이체”가 실행되는 상황과 “이체중 예외 발생”에서 롤백이 일어나지 않아 실패하는 상황은 각각 스프링의 트랜잭션 관리와 AOP가 어떻게 작동하는지를 이해하는 데 중요한 포인트입니다. 스프링에서 @Transactional
어노테이션이 붙은 메소드는, 해당 메소드가 실행될 때 스프링 컨테이너에 의해 트랜잭션 관리가 자동으로 이루어지며, 이는 AOP(Aspect-Oriented Programming)를 기반으로 합니다. AOP는 로직의 분리를 통해 핵심 비즈니스 로직과 트랜잭션 관리 로직을 분리할 수 있게 도와줍니다.
스프링 AOP와 트랜잭션 관리에 대해 좀 더 깊이 이해하고 싶으시다면 다음 자료들을 참고하시는 것을 권장합니다:
병훈님의 경우, “정상 이체”와 “이체 중 예외 발생” 사이에서 발생하는 트랜잭션 처리 메커니즘의 차이를 이해하시려면, 스프링의 트랜잭션 관리와 AOP에 대한 개념을 잘 이해하고 계시면 도움이 될 것입니다. 실제로 스프링 컨테이너에 의해 관리되는 빈에 대해 @Transactional
을 적용할 때, 그리고 그것이 프록시를 통해 어떻게 동작하는지를 파악하는 것이 중요합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.