[Lecture - 김영한님(스프링 핵심 원리 - 기본편)] 스프링 컨테이너 생성
inflearn에서 김영한님 강의를 들으면서 내용을 정리해보자.
스프링 핵심 원리 - 기본편
스프링 컨테이너 생성
1
ApplicationContext applicationContext = new AnnotationConfigApplicatinContext(AppConfig.class);
ApplicationContext
를 스프링 컨테이너라고 한다.ApplicationContext
는 인터페이스이다.ApplicationContex Interface를 구현한 것 중 하나가 AnnotationConfigApplicationContext로 다형성이 적용되어 있다.
- 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다.
요즘에는 애너테이션 기반이 더 편해서, XML을 기반으로 만들지 않는 추세이다.
- 자바 설정 클래스를 기반으로 스프링 컨테이너 ApplicationContext를 만들어보자.
new AnnotationConfigApplicationContext(AppConfig.class);
- 이 클래스는 ApplicationContext 인터페이스의 구현체이다.
스프링 컨테이너 생성 과정
- 스프링 컨테이너 생성
new AnnotationConfigApplicationContext(AppConfig.class)
- 스프링 컨테이너를 생성할 때는 구성 정보를 지정해줘야 한다.
AppConfig.class
를 구성 정보로 지정했다.
- 스프링 빈 등록
- 스프링 컨테이너는 파라미터로 넘겨온 설정 클래스 정보를 사용해서 스프링 빈을 등록한다.
- 빈 이름은 메서드 이름을 사용한다.
- 빈 이름을 직접 부여할 수도 있다.
@Bean(name="memberService2")"
빈 이름은 항상 다른 이름을 부여해야 한다. 같은 이름을 부여하면, 다른 빈이 무시되거나, 기존 빈이 덮어버리거나 설정에 따라 오류가 발생한다.
- 스프링 빈 의존관계 설정 - 준비
- 스프링 컨테이너에서 설정 정보를 확인한다.
- 스프링 빈 의존관계 설정 - 완료
- 스프링 컨테이너는 설정 정보를 참고해서 의존관계를 주입(DI)한다.
- 단순히 자바 코드를 호출하는 것 같지만, 차이가 있다.
차이는 추후에 싱글톤 컨테이너에서 설명한다.
스프링은 빈을 생성하고, 의존관계를 주입하는 단계가 나누어져 있다.
그런데 이렇게 자바 코드로 스프링 빈을 등록하면 생성자를 호출하면서 의존관계 주입도 한번에 처리된다. (memberService
가 호출되면 memberRepository
가 호출되듯이 의존관계가 다 엮여져 있다.)
이 글에서는 이해를 돕기 위해 개념적으로 나누어 설명한다. 자세한 내용은 추후에 의존관계 자동 주입에서 다시 설명한다.
정리
스프링 컨테이너를 생성하고, 설정(구성) 정보를 참고해서 스프링 빈도 등록하고, 의존관계도 설정했다.
This post is licensed under CC BY 4.0 by the author.