-
Spring 기본 10 - 스프링 컨테이너와 스프링FrameWork/Spring&Spring-boot 2023. 11. 10. 11:40
스프링 컨테이너 생성
스프링 컨테이너가 생성된는 과정을 알아보자.
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
- ApplicationContext를 스프링 컨테이너라고 한다.
- ApplicationContext는 인터페이스이다.
- 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 어노테이션 기반의 자바 설정 클래스로 만들 수 있다.
- 직전에 <Spring 기본 9 - 스프링으로 전환> 게시글에서 AppConfig를 사용했던 방식이 어노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것이다.
- 자바 설정 클래스 기반으로 스프링 컨테이너(ApplicationContext) 만들기
- new AnnotationConfigApplicationContext(AppConfig.class);
- 위 클래스는 ApplicaionContext 인터페이스의 구현제이다.
➕ 참고
더 정확히는 스프링 컨테이너는 BeanFactory, ApplicationContext로 구분해서 이야기 한다. BeanFactory를 직접사용하는 경우는 거의 없으며 일반적으로 ApplicationContext를 스프링 컨테이너라고 한다.1. 스프링 컨테이너 생성
- new AnnotationConfigApplicationContext(AppConfig.class)
- 스프링 컨테이너를 생성할 때는 구성 정보를 지정해주어야 한다.
- 여기서는 AppConfig.class를 구성 정보로 지정했다.
2. 스프링 빈 등록
- 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용해서 스프링 빈을 등록한다.
*빈 이름*
- 빈 이름은 메서드 이름을 사용한다.
- 빈 이름을 직접 부여할 수 도 있다.
- @Bean(name="memberService2")
❗주의
빈 이름은 항상 다른 이름을 부여 해야 한다. 같은 이름을 부여하면, 다른 빈이 무시되거나, 기존 빈을 덮어버리거나 설정에 따라 오류가 발생할 수 있다.3. 스프링 빈 의존관계 설정 - 완료
- 스프링 컨테이너는 설정 정보를 참고해서 의존관계를 주입(DI)한다.
- 단순히 자바 코드를 호출하 것 같지만, 차이가 있다. (싱글톤 컨테이너 참)
➕참고
스프링 빈을 생성하고, 의존관계를 주입하는 단계가 나누어져있다. 그런데 이렇게 자바 코드로 스프링 빈을 등록하면 생성자를 호출하면서 의존관계 주입도 한번에 처리된다. 위 그림에서는 이해를 돕기위해 개념적으로 나누어 표현하 였다. (의존관계 자동 주입에서 다시 설명하겠다.)정리
스프링 컨테이너를 생성하고, 설정(구성) 정보를 참고해서 스프링 빈도 등록하고, 의존관계도 설정했다. 이제 스프링 컨테이너에서 데이터를 조회해 보자.
[출처 - 스프링 핵심 원리 - 기본편]
'FrameWork > Spring&Spring-boot' 카테고리의 다른 글
Spring 기본 12 - BeanFactory와 ApplicationContext (0) 2023.11.10 Spring 기본 11 - 스프링 빈 조회 (0) 2023.11.10 Spring 기본 9 - 스프링으로 전환하기 (0) 2023.11.09 Spring 기본 8 - IoC, DI 그리고 컨테이너 (1) 2023.11.09 Spring 기본 7 - 좋은 객체 지향 설계의 5가지 원칙 적용 (0) 2023.11.09