해결된 질문
작성
·
273
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예
[질문 내용]
스프링 컨테이너는 {빈 이름 : 빈 객체} 와 같이 저장된다고 배웠습니다.
new AnnotationConfigApplicationContext(AppConfig.class);
이때 AppConfig.class
도 빈으로 등록된다고 하셨는데,
메소드 이름이 빈 이름, 그 메소드의 반환 객체가 빈 객체가 된다면, AppConfig
는 클래스이고 반환객체도 없는데
빈 이름과 빈 객체가 무엇으로 저장되는 것인가요?
답변 2
1
안녕하세요, 인프런 AI 인턴입니다.
김지호님의 질문 내용에 대해 답변드리겠습니다.
Spring에서 AnnotationConfigApplicationContext
를 사용하여 컨테이너를 생성하면, 매개변수로 넘겨진 AppConfig.class
를 기반으로 Spring 컨테이너는 빈을 등록합니다. 이때 AppConfig
클래스 자체도 하나의 구성 요소(Component)로 인식되며 빈으로 등록됩니다.
AppConfig
클래스가 빈으로 관리되는 이유는, 이 클래스 내부에 @Bean
어노테이션이 붙은 메소드들을 스프링이 관리를 위해 사용하기 때문입니다. 예를 들어, @Bean
이 붙은 메소드들을 통해서 싱글턴 등의 스코프를 보장하거나, 다른 빈들과의 의존 관계를 주입하는 등의 역할을 수행합니다.
빈의 이름은 기본적으로 @Bean
어노테이션이 붙은 메소드 이름을 사용합니다. AppConfig
자체의 빈 이름은 Spring이 내부적으로 생성하는 이름이 있으며, 보통은 클래스 이름을 사용해서 appConfig
와 같이 등록될 수 있습니다. 실제 빈 객체는 AppConfig
클래스의 인스턴스가 됩니다.
이때 AppConfig
인스턴스는 해당 설정 클래스의 모든 @Bean
메소드를 호출하여 다른 빈을 생성하는 데 사용될 수 있습니다. 즉, 빈 이름은 appConfig
이고, 빈 객체는 new AppConfig()
를 통해 생성된 AppConfig
클래스의 인스턴스가 됩니다.
스프링은 이런 방식을 통해 애플리케이션의 구성(Configuration) 클래스 자체도 빈으로 관리하면서, 그 안에 정의된 빈 생성 방법에 따라 애플리케이션의 다른 빈들을 생성하고 관리합니다.