티스토리 뷰
컴퍼넌트 스캔
컴퍼넌트 스캔이란 스프링에서 자동으로 의존성을 주입해주는 것을 말한다. 실제로는 자동이 아니라 @Component 어노테이션이 붙은, 혹은 확장 어노테이션을 붙이면 스프링 컨테이너에 자동으로 객체가 저장되어 연결하는 방식이다. 자세한 내용은 자동 의존관계 포스팅을 참고하자. 우리는 정형화된 패턴인 컨트롤러, 레파지토리, 서비스단에서 @Controller, @Service를 붙여준다.
Spring Data Jpa
JpaRepository<E, P>를 상속받은 인터페이스에서 @Repository를 붙여주지 않아도 되는 이유는 @Repository 없어도 빈으로 등록된다. 하지만 컴퍼넌트 스캔 방식으로 동작하는 것이 아니다. 스프링 데이터에서 해당 인터페이스(JpaRepository를 상속한 인터페이스)를 구현한 클래스를 찾아서 사용한다. 실제로는 인터페이스를 구현한 클래스를 찾아서 바로 사용하는 것이 아니라, 동적으로 임의의 구현 클래스를 만들고, 내가 구현한 클래스를 연결시켜준다.
이것을 다이나믹 프록시라는데, 솔직히 잘 모르겠다. 위 답변의 질문을 보면 내가 모르는 것들이 꽤 많다. 질문은 링크를 참고하자.
정리
정리하자면 JpaRepsotiry 뿐만 아니라 Spring Data를 상속받은 인터페이스에는 @Repository를 안붙여도 된다는 점,
빈으로 등록할 때 컴퍼넌트 스캔 방식이 아닌 Spring Data가 인터페이스를 구현한 클래스를 찾아서 연결시켜 준다는 점 이다.
'SpringBoot' 카테고리의 다른 글
MultipartFile을 사용해서 이미지를 로컬에 업로드하기 (2) | 2022.08.27 |
---|---|
트랜잭션 개념과 스프링 프레임워크에서 지원하는 트랜잭션을 알아보자 (0) | 2022.08.20 |
Refresh Token 개념과 동작 원리 정리 (0) | 2022.08.01 |
디버깅 개념과 디버깅을 사용하여 문제해결하기 (0) | 2022.07.30 |
QueryDSL 문법과 다양한 검색 조건 쿼리 작성해보기 (0) | 2022.07.29 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday