<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의 중요한 개념 중 하나이다.
- 이상 끗
'Java & Spring' 카테고리의 다른 글
인텔리J 스프링부트, MyBatis CamelCase 적용하기 (0) | 2021.02.26 |
---|---|
우분투(18.04)에 openjdk 11 설치하기 (0) | 2019.03.27 |
배열 정렬하기 (0) | 2019.02.07 |
HttpURLConnection 설정 및 옵션 (0) | 2018.03.31 |
스프링 스케쥴러 구현하기 (0) | 2017.12.19 |