티스토리 뷰

컴퍼넌트 스캔

컴퍼넌트 스캔이란 스프링에서 자동으로 의존성을 주입해주는 것을 말한다. 실제로는 자동이 아니라 @Component 어노테이션이 붙은, 혹은 확장 어노테이션을 붙이면 스프링 컨테이너에 자동으로 객체가 저장되어 연결하는 방식이다. 자세한 내용은 자동 의존관계 포스팅을 참고하자. 우리는 정형화된 패턴인 컨트롤러, 레파지토리, 서비스단에서 @Controller, @Service를 붙여준다. 

 

Spring Data Jpa

JpaRepository<E, P>를 상속받은 인터페이스에서 @Repository를 붙여주지 않아도 되는 이유는 @Repository 없어도 빈으로 등록된다. 하지만 컴퍼넌트 스캔 방식으로 동작하는 것이 아니다. 스프링 데이터에서 해당 인터페이스(JpaRepository를 상속한 인터페이스)를 구현한 클래스를 찾아서 사용한다. 실제로는 인터페이스를 구현한 클래스를 찾아서 바로 사용하는 것이 아니라, 동적으로 임의의 구현 클래스를 만들고, 내가 구현한 클래스를 연결시켜준다. 

 

 

이것을 다이나믹 프록시라는데, 솔직히 잘 모르겠다. 위 답변의 질문을 보면 내가 모르는 것들이 꽤 많다. 질문은 링크를 참고하자. 

 

정리

정리하자면 JpaRepsotiry 뿐만 아니라 Spring Data를 상속받은 인터페이스에는 @Repository를 안붙여도 된다는 점,

빈으로 등록할 때 컴퍼넌트 스캔 방식이 아닌 Spring Data가 인터페이스를 구현한 클래스를 찾아서 연결시켜 준다는 점 이다. 

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday