Java & Spring2019. 1. 24. 11:15
<context : annotation-config />
<context : component-scan />

두 가지는 유사하면서도 차이점이 존재한다.

둘 다 application-context에 정의해서 사용할 수 있는데 헷갈리던 부분이 있어 명확하게 다시 정리해보고자 한다.


<context : annotation-config />

이미 등록된 bean에 대해서만 Annotation을 활성화한다.

어딘가에 bean을 등록해놓으면 @Autowired와 @Qualifier Annotation을 해석해서 가져다 쓰겠다는 의미이다.

@Autowired와 @Qualifier 두 가지만 해결한다.

따라서 위 태그를 사용하더라도 xml에 bean을 반드시 선언해야 한다.

<context : component-scan/>

bean의 등록 여부와 관계없다. 스프링이 알아서 bean 스캔을 통해 Annotation을 해석하고 활성화한다.

@Autowired와 @Qualifier 뿐만 아니라 @Service, @Component, @Controller, @Repository 등 모든 클래스를 스캔하고

bean을 작성한다.

따라서 이 태그를 사용하면 위 태그는 사용할 필요가 없다.

다만 이 경우 base-package를 통해 스프링이 스캔할 패키지 위치를 지정해두는 것이 일반적이다.

<context : component-scan base-package="com.sample"/>


마지막으로 둘의 중요한 공통점은 의존 주입(DI)이다. 스프링에서 흔히 말하는 의존주입은 위 과정을 통해 일어난다.

그리고 이 의존 주입(또는 의존성 주입)은 스프링 IoC의 중요한 개념 중 하나이다.


- 이상 끗



Posted by 홍규홍규