백엔드/Spring(Boot)

@ComponentScan

김어찐 2021. 8. 12. 01:57
728x90

@ComponentScan 은 @Component가 붙은 모든 클래스를 스프링 빈으로 등록한다

이때 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자를 사용한다.

 * 빈 이름 기본 전략 : MemberServiceImpl 클래스 -> memberServiceImpl

 * 빈 이름 직접 지정 : 만약 스프링 빈의 이름을 직접 지정하고 싶으면 @Component("지정할 이름")

 

@Component 어노테이션 붙은 클래스 스캔

@Configuration
@ComponentScan
public class AutoAppConfig {

}

 

@Component
public class MemberServiceImpl implements MemberService {


    private final MemberRepository memberRepository;

    @Autowired
    public MemberServiceImpl(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }

 

AutoAppConfig 스프링 컨테이너에 등록해 빈 사용

 

public class AutoAppConfigTest {
    @Test
    void basicScan()
    {
        AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class);

        MemberService memberService = ac.getBean(MemberService.class);
        Assertions.assertThat(memberService).isInstanceOf(MemberService.class);

    }
}
728x90