Spring

[Spring 완전 정복 시리즈] 10편 - 스프링 컨테이너의 시작과 빈 등록

dev-nadan 2025. 7. 27. 14:43

스프링 애플리케이션을 구성할 때 가장 먼저 등장하는 존재가 바로 스프링 컨테이너다. 이 컨테이너는 개발자가 정의한 빈 객체들을 생성하고, 의존관계를 자동으로 주입해주는 중요한 역할을 담당한다.

 

 


요구사항

 

  • 객체 간의 의존관계를 효율적으로 관리하고 싶다.
  • 설정 정보를 기반으로 객체를 등록하고, 필요할 때 조회하고 싶다.

문제점

 

  • 매번 객체를 생성하고 의존성을 수동으로 연결하는 건 비효율적이다.
  • 프로젝트가 커질수록 객체 관리가 복잡해지고, 결합도가 높아진다.

개선 방향: 스프링 컨테이너 도입

 

스프링에서는 ApplicationContext라는 컨테이너를 통해 객체를 자동으로 생성하고 관리한다. 이를 위해 @Configuration@Bean을 활용하여 설정 정보를 기반으로 빈을 등록한다.

@Configuration
public class AppConfig {
    @Bean
    public MemberService memberService() {
        return new MemberServiceImpl(memberRepository());
    }

    @Bean
    public MemberRepository memberRepository() {
        return new MemoryMemberRepository();
    }
}

위처럼 @Bean 메서드 이름이 빈의 이름이 되고, 반환되는 객체가 빈으로 등록된다. 그리고 빈 이름은 반드시 중복되지 않아야 한다!

 

 


설계 원칙 정리

 

  • 스프링 컨테이너는 설정 클래스를 읽고, 빈 객체를 생성하고 등록한다.
  • 등록된 빈들은 컨테이너에서 관리되고, 의존관계가 자동으로 연결된다.
  • 생성자 호출 시점에 의존관계 주입도 함께 이루어진다.
  • 빈 이름은 명확하고 중복되지 않게 설정해야 한다.

 


다음 편에서는 스프링 컨테이너에 등록된 빈을 어떻게 조회하는지, 그리고 ApplicationContext와 BeanFactory의 차이를 중심으로 더 깊이 있게 알아보려고 한다.