스프링 컨테이너

이건·2024년 9월 10일

스프링 컨테이너(Spring Container)
스프링 컨테이너는 스프링 프레임워크의 핵심 구성 요소로, 자바 객체의 생명주기를 관리하고 필요한 추가 기능을 제공한다. 이러한 객체는 스프링에서 빈(Bean)이라고 하며, 컨테이너는 이 빈의 생성, 관리, 제거 및 의존성 주입을 책임진다. 스프링 컨테이너는 주로 XML 또는 어노테이션 기반의 자바 설정 클래스를 통해 구성된다.


스프링 컨테이너의 기본 이해

  • 빈(Bean): 스프링이 관리하는 자바 객체
  • 생명주기 관리: 빈의 생성에서 소멸까지 관리함
  • 의존성 주입(DI): 빈 간의 의존성을 관리하고 주입하는 기능을 제공

스프링 컨테이너의 종류

  1. BeanFactory
    • 스프링의 최상위 인터페이스로, 빈의 생성과 관리를 담당
    • 메서드를 통해 빈 인스턴스를 반환할 수 있음
  2. ApplicationContext
    • BeanFactory를 확장한 인터페이스로, 추가 기능이 포함됨
    • 다양한 부가 기능(메시지 다국화, 환경 설정 관리 등)을 제공
    • 대부분의 스프링 애플리케이션에서 ApplicationContext를 사용함

생성 방법

  • 스프링 부트 사용 이전에는 XML 방식이 일반적이었으나, 현재는 Java 어노테이션을 사용하는 것이 보편적임.
  • 예시 코드:
    @Configuration
    public class AppConfig {
        @Bean
        public MemberService memberService() {
            return new MemberServiceImpl(memberRepository());
        }
        @Bean
        public MemberRepository memberRepository() {
            return new MemoryMemberRepository();
        }
    }

스프링 컨테이너 사용 이유

  • 의존성 감소: 빈 간의 의존성을 낮추어 느슨한 결합도를 유도
  • 유지보수 용이: 구현 클래스 대신 인터페이스에 의존하여 코드 변경 위험 최소화
  • 행동제어: 메서드 호출을 프레임워크가 관리함으로써 개발자는 비즈니스 로직에 집중할 수 있음

예제: 스프링 컨테이너 사용

ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService = applicationContext.getBean("memberService", MemberService.class);

위 코드는 어노테이션 기반의 설정 정보를 통해 스프링 컨테이너를 초기화하고, 빈을 조회하는 과정을 보여준다.

0개의 댓글