inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

JPA 적용3 - 예외 변환

6:58초에서 log로 왜 proxy가 찍히는건지 잘 모르겠습니다..

해결된 질문

699

:/

작성한 질문수 2

0

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

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

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

[질문 내용]
잘 이해가 안되어 질문 남깁니다.
test에 있는 itemRepository는 bean으로 Config 파일을 통해서 주입시킨 JpaRepository 객체가 autowired 통해서 들어왔는데, 왜 프록시 객체가 로그로 찍히나요?

repository의 프록시는 서비스 레이어 넘기기 전, 예외 변경기능만 하는 것 아닌가요? itemRepository에 주입된 객체가 왜 repository의 프록시 객체인지가 궁금합니다.. save()같은 repository안의 메서드에서 예외가 발생하여 service로 넘어갈때 프록시 객체가 적용되어야 하는것 아닌가요?

헷갈려서 질문남깁니다..

감사합니다.

 

spring

답변 1

1

y2gcoder

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

먼저 @SpringBootTest 는 실제 애플리케이션을 구동할 때와 마찬가지로 모든 빈을 가져와서 테스트합니다.
그때 @Configuration, @Bean으로 주입하는 ItemRepository도 빈으로 등록하게 되는데, 이 때 ItemRepository에 @Repository가 붙어있다면 스프링 부트에 있는 예외 변환 AOP를 통해 프록시가 빈으로 등록됩니다. 그래서 이미 ItemRepositoryTest에서 @Autowired로 불러온 ItemRepository 빈 객체가 프록시 객체인 것으로 이해해주시면 감사하겠습니다.

실제로 @ComponentScan 뿐만 아니라 @Configuration + @Bean도 빈 등록시 빈 후처리기를 통해 빈 객체를 변환 후 저장할 수 있습니다. 이는 스프링 핵심원리 고급편의 빈 후처리기 챕터를 참고해주십시오!

감사합니다.

0

:/

애초에 프록시가 bean으로 등록되는 거였군요.

이해 했습니다.

감사합니다!

1

y2gcoder

파이팅입니다!

설정 정보 없이 임베디드 데이터베이스 생성

0

15

1

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

0

38

2

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

0

32

1

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

0

49

1

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

0

78

1

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

0

89

2

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

0

184

1

@repository 어노테이션

0

94

3

ItemService

0

59

1

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

0

54

1

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

0

57

1

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

0

55

1

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

2

180

2

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

0

81

1

@EventListener(ApplicationReadyEvent.class) 관련

0

90

1

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

0

77

1

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

0

133

2

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

0

96

1

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

1

114

1

트랜잭션 전파 질문.

0

87

1

프로젝트 오픈 에러

0

126

1

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

0

84

2

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

0

74

1

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

0

105

1