회사일중에 딱 이런상황에 마주쳐서 질문드립니다.
381
작성한 질문수 70
이번 강의에서 내부메소드를 사용할 경우 그 메소드를 클래스로 만들어서 실행하게되면 AOP가 적용된다고 알려주셔서 실제 일하는곳에서 한번 적용을 해보았습니다.
[컨트롤러 - consultSave]
컨트롤러에서 insertConsult를 합니다.

[서비스 - ConsultService]
원래 서비스클래스안에 4개의 로직이 있었으나 Transactional이 적용되지 않아서 각각의 로직을 클래스로 만들어서 적용하였습니다.


[분리된 서비스클래스]
총4개의 분리된 서비스가 있지만, 너무길어질것 같아서 1개의 로직만 업로드하였습니다!! 물론 분리된 서비스는 스프링빈에 등록될 수 있도록 @Service를 붙여놓은 상태입니다.

간략히 정리하여 저의 생각을 말씀드리면 tranSave.insertConsult()메서드를 통하여 저장을 한 후에 그 다음 로직에서 고의적으로 Exception이 발생시키면 @Transactional이 동작하여 rollback이 되어야한다고 생각하는데 rollback이 동작하지 않아 DB에 1개의 로우가 insert되어있는 현상입니다. 클래스를 나누어서 구조변경하였음에도 불구하고 @Transactional이 동작하지 않는 이유가 궁금합니다.
혹시 try catch문가 연관이 되어있을까요??
답변 1
2
안녕하세요. 김은재님, 공식 서포터즈 David입니다.
.
스프링 트랜잭션의 경우 checkedException에서는 예외가 발생하더라도 롤백시키지 않습니다.
발생한 예외가 CheckedException인가요? 그렇다면 RuntimeException을 발생시켜보시겠어요?
.
감사합니다.
0
RuntimeException으로 변경하면 롤백이 되고 모든로직을 수행한후에
html파일에서 ajax의 error 로 들어가지않고 success로 들어가게 되는데 왜 error로 빠지지않고 success로 들어가게 될까요??
0
컨트롤러에서 catch로 예외를 처리해주기 때문인걸로 보입니다.
try-catch문에서 예외가 어떻게 처리되고, 예외가 처리된 이후에 어떤 흐름으로 코드가 진행되는지 학습해보시면 바로 알 수 있으실 거에요.
SpringBoot 4.0.6 버전에서 PackageLogTracePostProcessor exception
0
83
3
어드바이스 순서 디폴트 기준이 궁금합니다.
0
75
1
AspectV1 예제를 @Configuration 수동 등록으로도 가능한가요?
0
102
2
구체 클래스를 상속받아 확장한 형태도 클래스패턴/데코레이터 패턴이라고 칭하나요?
0
73
1
TraceTemplate 을 미리 빈으로 등록해서 사용할때 이렇게 설정하는게 맞는건가요?
0
69
1
Decorator 에서 추상메서드로 뺄때 질문 있습니다.
0
63
1
대상 클래스에 기본 생성자가 없을 때
0
83
1
스프링 부트 버전 4.0 aop 의존성 명칭 변경
1
406
2
final 키워드 사용 관련 질문
0
85
1
안녕하세요
0
75
1
ThradLocal 실무 사례
0
106
2
실무에서의 동시성 문제
0
73
1
로그 등 부가 기능에 대한 테스트코드
0
60
1
ProceedingJoinPoint와 MethodInvocation에 대하여
0
77
1
실무 멀티스레딩에 대한 궁금증
0
81
1
안녕하세요 질문있습니다
0
49
1
AspectV3 aop 실행 순서 문의 드립니다
0
45
1
MDC vs AOP 중에 고민중입니다.
0
85
1
순환참조
0
168
2
this를 단독으로 사용할때랑 파라미터 바인딩 할때 차이
0
83
1
빈 후처리에 등록 질문 있습니다.
0
85
1
AppConfig 설정하는 설명중에 이해가 안되는게 있습니다.
0
98
1
ThreadLocal을 지역변수로 선언하면 remove가 필요할까요?
0
122
2
@Aspect 어노테이션으로 생성된 Advisor의 Bean 저장 여부
0
76
1





