inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 DB 1편 - 데이터 접근 핵심 원리

트랜잭션 문제 해결 - 트랜잭션 AOP 적용

MemberServiceV3_3Test 코드중 질문

396

H K

작성한 질문수 93

0

MemberServiceV3_3Test 테스트중

@Transactional 어노테이션을 쓰기위해

@SpringBootTest 어노테이션을 추가 시키는것 까지 이해는 했는데

(06:30 참고)

그 이후 이전 코드의 @BeforeEach 코드를 지우셨습니다.
(직접 주입)

그이후에 @TestConfiguration 을 추가해주셨는데
왜 꼭이렇게 빈을 주입해야 하나요 ?


( [MemberRepositoryV3, MemberServiceV3_3] << 이 두 객체를 @Autowired하지않고 이전 @BeforeEach로 사용했지만 안됌) - DataSource, PlatformTransactionManager 두 객체는 @Bean 설정 그 이후 테스트 실패.

 

결론적으로 MemberRepositoryV3,MemberServiceV3_3 이 둘 클래스도 왜 @TestConfiguration로 빈으로 주입해야 정상작동 하나요 ??

 

실패한 코드

===================================

@BeforeEach
void before(){
    memberRepository = new MemberRepositoryV3(TestConfig.dataSource());
    memberService = new MemberServiceV3_3(memberRepository);
}

@TestConfiguration
static class TestConfig{
    @Bean
    static DataSource dataSource(){
        return new DriverManagerDataSource(URL, USERNAME, PASSWORD);
    }

    @Bean
    PlatformTransactionManager transactionManager(){
        return new DataSourceTransactionManager(dataSource());
    }
}

 

spring

답변 1

2

김영한

안녕하세요. H K님

스프링이 제공하는 트랜잭션 AOP를 사용하려면 스프링 컨테이너에 DataSource, TransactionManager 빈이 등록되어야 합니다.

그래서 이런 과정을 통해서 해당 빈들을 스프링 컨테이너에 등록하게 됩니다.

감사합니다.

0

H K

 memberRepository,  memberService 도 빈으로 등록 되어 있어야 하는건가요 ?
위 코드처럼 DataSource, TranscationManager은 빈으로 등록하고 memberRepository,memberService은 @BeforeEach로 햇더니 실패해서 질문드립니다 !

0

김영한

네 맞습니다. 스프링 빈으로 등록해야 합니다.

@Transactional이 적용되려면 스프링 빈이어야 합니다.

감사합니다.

0

H K

감사합니다

트랙잭션 격리수준 선택에 대해서 질문

0

22

1

spring initialiser 어떤걸 선택해야될지 모르겠어요

0

60

2

트랜잭션 템플릿이 체크예외는 커밋하는 이유가 궁금합니다.

0

73

1

jdbc 학습하다 궁금해서 질문드려요

0

103

1

정상이체와 이체중 예외발생 차이

0

86

2

이번 강의부터가 JDBC 직접 사용 맞나요?

0

103

1

순수한 서비스 계층에 대한 의문???

0

93

2

3_4test, 4test 자동 리소스 안됨

0

66

2

데이터베이스 선택 관련 질문.

0

76

2

after 메서드 사용 유무

0

67

2

데이터베이스 접근 및 DB 락

0

65

1

@SpingBootTest, @TestConfiguration

0

68

1

Read Committed 격리 수준 사용 관련 질문

0

61

1

AopCheck Test 부분의 EnhancerBySpring 확인 법??

0

74

2

커리큘럼 관련 질문

0

85

1

서비서 계층 스프링 프레임워크 사용

0

100

1

validation(toMember)의 위치

0

91

2

데이터 계층에서 서비스 로직의 datasource를 인식하는 방법

0

178

2

member 상수 질문

0

139

2

ctrl + F6 이후로 con 인식이 안 됩니다

0

171

2

DrivenManager 와 Connection 반환에 대한 질문입니다!

0

121

1

섹션5 트랜잭션 템플릿관련 질문(이기종 DB)

0

127

1

세션1 테이블 조회결과 그림은 Redo 로그에 속하나요?

0

107

1

트랜잭션이 필요하지 않은 경우 DB 대신 파일 시스템을 사용하는 것이 더 효율적인가?

0

105

1