인프런 커뮤니티 질문&답변

강민석님의 프로필 이미지

작성한 질문수

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

정리

@Transactional 의존 관계 주입

해결된 질문

작성

·

161

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
@Transactional에서는 스프링 컨테이너를 참조하기 사용되는 리소스들이 빈으로 등록되어야 하기 때문에 properties에 url, username, password를 입력해놓으면 스프링부트가 알아서 데이터소스를 빈으로 등록해줌을 알았습니다. 트랜잭션 매니저도 라이브러리에 등록된 정보를 바탕으로 JDBC트랜잭션 매니저 또는 JPA트랜잭션 매니저를 빈으로 등록해주는데 그렇다면 Test가 아니라 실제 코드에서 트랜잭션에 사용되는 리포지토리랑 서비스클래스에 @Repository랑 @Service를 사용해야 @Transactional을 사용할 수 있는지 궁금합니다.

답변 1

0

안녕하세요. 강민석님, 공식 서포터즈 y2gcoder입니다.

말씀해주신 것이 맞습니다.

정확하게는 @Component(@Service, @Repository도 @Comonent를 상속합니다)를 통해 빈으로 등록된 객체에 대해 @Transactional을 붙이면 트랜잭션 프록시 객체로 빈으로 등록해주게 됩니다

AOP, 프록시 기술과 관련되어있고, 해당 기술에 대해 궁금하시다면 스프링 핵심 원리 - 고급편 강의를 수강해보시는 것을 추천합니다!

 

감사합니다.