본문 바로가기

Spring

[Spring] 스프링 컨테이너에 대하여 알아보자.

IOC 컨테이너? DI 컨테이너란?

AppConfig처럼 객체를 생성, 관리, 의존관계를 연결해 주는 것을 IoC 또는 DI 컨테이너라고 한다.

IOC 컨테이너라고도 불리기도 하는데, 최근에는 의존관계 주입에 초점을 맞추어서 주로 DI 컨테이너라고 한다. 또는 어셈블러나 오브젝트 팩토리라고도 부른다.

스프링 컨테이너의 생성 과정

//스프링 컨테이너 생성
ApplicationContext applicationContext = 
	new AnnotationConfigApplicationContext(AppConfig.class);
  • ApplicationContext를 스프링 컨테이너라고 하며, ApplicationContext는 인터페이스이다.
    • ApplicationContext의 구현체
      • ClassPathXmlApplicationContext(XML 기반 설정 파일 사용 시 사용)을 통해 스프링 컨테이너를 XML 기반으로도 생성할 수 있다.
      • AnnotationConfigApplicationContext을 통해 스프링 컨테이너를 애노테이션 기반의 자바 설정 클래스로 만들 수가 있다.

스프링 컨테이너의 생성

  • 스프링 컨테이너를 생성할 때, 구성 정보(AppConfig.class)를 지정해주어야 한다. 그 구성 정보를 통하여 스프링 빈을 등록하게 된다.
  • 스프링 컨테이너 내부는 스프링 빈 저장소가 있고, 저장소 내부는 빈의 이름과 빈 객체의 참조값을 저장해주는 공간으로 구성되어 있다.

스프링 빈 등록

  • 스프링 컨테이너를 생성할 때, 구성 정보(AppConfig.class)를 지정해주어야 한다. 그 구성 정보를 통하여 스프링 빈을 등록하게 된다.
  • 스프링 컨테이너 내부는 스프링 빈 저장소가 있고, 저장소 내부는 빈의 이름과 빈 객체의 참조값을 저장해주는 공간으로 구성되어 있다.

스프링 빈 의존관계 설정

  • 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용하여 스프링 빈을 등록한다.
    • 스프링 빈의 이름은 메서드 이름을 사용하며, 직접 부여할 수도 있다.
    • → @Bean(name=”memberService2”)
  • 단, 빈 이름은 항상 다른 이름을 부여해야 한다. 같은 이름을 부여하면 다른 빈이 무시되거나 기존 빈을 덮어버릴 수도 있고, 설정에 따라 오류가 발생할 수도 있다.

정리

  • 기존에는 개발자가 AppConfig이라는 별도의 설정 파일에 직접 객체 생성 및 의존성 주입을 해주었지만, 이제는 스프링 컨테이너를 사용해서 진행한다.
  • 스프링 컨테이너는 @Configlation이 붙은 AppConfig 클래스를 설정(구성) 정보로 사용하여 @Bean이 적힌 모든 메서드를 호출, 반환된 객체를 스프링 컨테이너에 등록한다.
  • 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 하는데, 스프링 빈은 @Bean이 붙은 메서드의 이름을 스프링 빈으로 사용한다. 이전처럼 Appconfig를 통해서 객체를 조회하지 않고, 스프링 컨테이너를 통해서 스프링 빈을 찾아야 한다. applicationContext.getBean(스프링 빈 이름, 타입형)을 통하여 찾을 수 있다.

 

※ 해당 포스팅은 김영한 강사님의 Spring 강좌를 듣고 중요 내용 중심으로 정리하게 되었습니다.

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8

'Spring' 카테고리의 다른 글

[Spring] DI란?  (0) 2025.09.29
[Spring] IOC란?  (0) 2025.09.28