Spring Core - Component Scan

iseon_u·2022년 6월 25일
0

Spring

목록 보기
27/33
post-thumbnail

Component Scan 컴포넌트 스캔


컴포넌트 스캔과 의존관계 자동 주입

스프링 빈 등록 방법

  • 설정 정보에 직접 등록할 빈 나열
  • 자바 코드 @Bean
  • XML <Bean>

⚠️ 이런 방법들은 스프링 빈을 일일이 등록해야한다. (반복 작업)

AutoAppConfig.java

@Configuration
@ComponentScan(
        excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
)
public class AutoAppConfig {
}
  • 컴포넌트 스캔을 사용하려면 먼저 @ComponentScan 을 설정 정보에 붙여주면 된다.
  • 기존의 AppConfig 와는 다르게 @Bean 으로 등록한 클래스가 하나도 없다.

컴포넌트 스캔

  • @Component 어노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록
  • 이젠 AppConfig 에서는 @Bean 으로 직접 설정 정보를 작성했고, 의존관계도 직접 명시했다.
  • 컴포넌트 스캔을 사용할 때는 생성자 위에 @Autowired 사용
  • @Autowired 는 의존관계를 자동으로 주입해준다.
  • 생성자에서 여러 의존관계도 한번에 주입 가능

@ComponentScan

  • @ComponentScan@Component 가 붙은 모든 클래스를 스프링 빈으로 등록한다.
  • 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자를 사용
    • 빈 이름 기본 전략: MemberServiceImpl 클래스 → memberServiceImpl
    • 빈 이름 직접 지정: 만약 스프링 빈의 이름을 직접 지정하고 싶으면 @Component(”memberService2”) 이런식으로 이름을 부여

@Autowired 의존관계 자동 주입

  • 생성자에 @Autowired 를 지정하면, 스프링 컨테이너가 자동으로 해당 스프링 빈을 찾아서 주입
  • 기본 조회 전략은 타입이 같은 빈을 찾아서 주입한다.
    • getBean(MemberRepository.class) 와 동일하다고 이해하면 된다.
profile
🧑🏻‍💻 Hello World!

0개의 댓글