본문 바로가기
Learning-log/Spring & JPA

(스프링 핵심 원리 - 기본편) 6-(1)@컴포넌트 스캔과 의존관계 자동 주입 시작하기

by why제곱 2023. 4. 4.

- 컴포넌트 스캔과 의존관계 자동주입 시작하기

  • 스프링 빈을 등록할 때 지금까지는 자바 코드의 @Bean이나 XML의 <bean>을 통해 직접 등록할 스프링 빈을 나열하는 방식 사용함.
  • 하지만 이렇게 등록해야 할 스프링 빈이 수십, 수백개가 된다면 귀찮을 뿐만 아니라 누락 문제도 발생
  • 그래서 스프링에서는 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능 제공함
  • 컴포넌트 스캔 사용법 : @ComponentScan 붙이기
  • @Configuration도 컴포넌트 스캔의 대상이 된 이유도 @Configuration의 소스코드를 열어보면 @Component 애노테이션이 붙어있기 때문
  • 이전에 Config 사용했을 때는 @Bean으로 직접 설정 정보 작성, 의존관계도 직접 명시
  • Component를 이용하면 이런 설정 정보 자체가 없으므로 주입도 클래스 내에서 해결.
  • @Autoweired 는 의존관계를 자동으로 주입해줌

  • 위는 별 내용이 없어보이지만 자동 주입이 필요한 class에 @Component를 붙이고 그 생성자에 @Autoweired를 모두 붙인 상태.
  • 따라서 아래 테스트가 정상적으로 작동함.
  • Component에 이름을 지정하고 싶으면 @Component("지정하고 싶은 이름") 과 같은 방법을 통해 이름 변경
  • 아닌 경우는, 스프링 빈의 기본 이름은 클래스 명을 사용하되, 맨 앞글자만 소문자가 됨
  • 생성자에 @Autoweired를 지정하면 스프링 컨테이너가 자동으로 해당 스프링 빈을 찾아 주입.
  • 타입이 같은 빈을 찾아 주입.