• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

트랜잭션 적용 확인

24.04.02 14:19 작성 조회수 92

0

[질문 내용]
TxBasicTest 클래스 안에 BasicService가 있는데 왜 Autowired로 의존성주입이 필요한지 헷갈리고 궁금합니다ㅠㅠ

답변 2

·

답변을 작성해보세요.

0

y2gcoder님의 프로필

y2gcoder

2024.04.03

안녕하세요. 해톨님, 공식 서포터즈 y2gcoder입니다.

TxBasicTest 코드에서 BasicService를 어떻게 주입하는지 보시면

@Autowired
BasicService basicService;

위와 같이 사용하고 있습니다!

이 말은 스프링 빈으로 등록된 basicService 빈을 찾아 필드주입방법으로 의존성을 주입해준다는 말과 같습니다.

만약 Autowired를 제거해보시면 아마 BasicService basicService 필드에는 null이 들어가 있을 것입니다!

 

그러면 필드에서 초기화하면 되지 않을까 생각하실 수도 있습니다. 이것도 안되는게 @Transactional 을 적용하기 위해서는 해당 객체가 빈으로 등록되어 있어야 합니다. 그래서 결국 @TestConfiguration @Bean 조합으로 BasicService 객체를 빈으로 등록해줬고, 빈으로 등록하는 과정에서 @Transactional 에 의해 생성된 프록시 객체로 빈이 등록되었고, 이를 테스트에서 @Autowired 를 통한 필드 주입 방식으로 받아서 테스트해주고 있는 것입니다!

해당 내용들은 스프링 핵심원리 기본편, 고급편에서 자세하게 학습하실 수 있습니다

 

 

감사합니다.

0

해톨님의 프로필

해톨

질문자

2024.04.02

테스트 하는 클래스여서 TestConfiguration에 스프링빈을 등록하고 의존관계주입을 하는 것 일까요 ? 그냥 클래스와 혼동했습니다 ㅜㅜ 혹시 제가 이해한 것이 맞을까요 ?