스프링 컨테이너 생성


이전챕터 스프링 핵심 원리 이해2 - 객체 지향 원리 적용 에서 ApplicationContext를 스프링 컨테이너라 부른다고 했다. 이번 챕터에서는 이 스프링 컨테이너가 생성되는 과정에 대해 알아본다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/99b326c9-19a4-4d57-98fa-7d264787bfd0/Untitled.png

ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);

💡 심화: 더 정확히는 스프링 컨테이너는 BeanFactory, ApplicationContext로 구분해서 이야기한다. 하지만, BeanFactory를 직접 사용하는 경우는 거의 없기에 일반적으로 ApplicationContext를 스프링 컨테이너라 한다.

스프링 컨테이너 생성 과정

스프링 컨테이너 생성

: new AnnotationConfigApplicationContext() 생성자 호출을 통해 스프링 컨테이너를 생성한다. 여기서 해당 생성자의 인자값으로 구성 정보를 지정해줘야하는데, 여기서는 예제코드로 작성한 구성정보 클래스인 AppConfig.class를 전달해준다.

스프링 컨테이너 생성 및 구성정보 지정

스프링 컨테이너 생성 및 구성정보 지정

스프링 빈 등록

전달받은 구성정보(AppConfig)를 사용해서 스프링 빈을 등록해준다.

여기서 빈 이름은 구성정보에 있는 메서드 이름을 사용하며, 임의로 어노테이션 속성(name)을 사용해 지정해줄수도 있다. 다만, 여기서 빈 이름은 항상 다른 이름을 부여해야하는데 그 이유는 빈 이름이 중복될 경우 다른 빈이 무시되거나 기존 빈을 덮어버리거나 설정에따라 에러가 발생할 수 있기 때문이다. 이럴 경우 어노테이션 속성으로 빈 이름을 바꿔줄수는 있지만, 가장 좋은건 빈 이름을 별개로 해놓는거다.

AppConfig의 빈 정보를 읽어와 등록해준다.

AppConfig의 빈 정보를 읽어와 등록해준다.