inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 DB 2편 - 데이터 접근 활용 기술

트랜잭션 AOP 주의 사항 - 프록시 내부 호출2

InternalService 빈 등록 질문

357

backisback

작성한 질문수 1

0

트랜잭션 AOP 주의 사항 - 프록시 내부 호출2
강의 질문입니다.

 @TestConfiguration
    static class InternalCallV1TestConfig {
        @Bean
        CallService callService() {
            return new CallService(new InternalService());
        }

        /*@Bean
        InternalService internalService() {
            return new InternalService();
        }*/
    }

위 코드에서 보시는 것과 같이 InternalService를 직접 빈으로 등록해주지 않고 CallService생성자 안에서 InternalService를 주입시켜주면 트랜잭션이 적용되지 않던데, 꼭 InternalService를 빈으로 직접 등록해줘야 하나요??

spring spring-boot transaction

답변 1

4

김효권

안녕하세요!

먼저 결론부터 말씀드리자면, 빈으로 등록한 InternalService 를 사용해야만 트랜잭션이 적용이 됩니다.

그 이유는 트랜잭션 동작원리을 살펴보면 알 수 있습니다!

  1. 스프링 빈 생성

  2. 만약 해당 빈이 트랜잭션 적용대상(@Transacational 존재 유무 확인)이면 BeanPostProcessor 에 해당 빈이 전달됩니다.

  3. BeanPostProcessor에서는 해당 빈을 트랜잭션이 적용된 프록시 빈으로 변환 하여 스프링 컨테이너에 변환한 빈을 저장합니다.

     

따라서 트랜잭션을 사용하기 위해서는, new 키워드를 통해 직접 생성한 인스턴스가 아닌 스프링 빈으로 등록된 인스턴스를 사용해야 트랜잭션이 적용됩니다.

감사합니다!

0

backisback

감사합니다!

RepositoryTest의 패키지 위치가 domain인 이유

0

35

2

REQUIRES_NEW 해결 방법에 대해서 질문있습니다!!

0

31

1

update()에 사용하는 setter 질문드립니다.

0

49

1

SQL 중심적 개발의 문제점에 대한 질문

0

72

1

혹시 Containing 을 안쓰신 이유가 있을까요?

0

86

2

[공유] 스프링부트 4.x 버전 mybatis 연동

0

180

1

@repository 어노테이션

0

89

3

ItemService

0

59

1

논리 커밋, 물리 커밋 질문드립니다.

0

54

1

내부 트랜잭션 커밋은 필수인가요?

0

57

1

프록시 커넥션 객체를 반환할 때 생성하는건가요?

0

55

1

Transaction readOnly 성능 개선 (김영한님의 대한 감사인사)

2

179

2

JPQL 대신 네이티브 쿼리를 사용해야 하는 경우

0

80

1

@EventListener(ApplicationReadyEvent.class) 관련

0

88

1

트랜잭션 동기화 매니저와 데이터 소스

0

77

1

DB 관련 강의 개설 계획은 없으신건가요?

0

133

2

물리 트랜잭션 과 논리트랜잭션 용어를 맞게 이해한걸까요

0

94

1

스프링 3 버전 이상 rollbackFor 변경된듯요

1

113

1

트랜잭션 전파 질문.

0

87

1

프로젝트 오픈 에러

0

126

1

외부 트랜잭션에서 isNewTransaction이 false로 나오는거에 대해 질문드립니다

0

84

2

같은 스레드를 사용하면 트랜잭션 동기화 매니저는 같은 커넥션을 반환

0

73

1

h2 인메모리 테스트중 예약어 충돌날 경우 대처방법

0

104

1

커스텀aop와 트랜잭션을 같이 사용할때 우선순위에 관한 질문

0

98

2