spring IOC 컨테이너란?

반응형
SMALL

Spring IoC(제어의 역전) 컨테이너는 스프링 프레임워크의 핵심 구성 요소로, 애플리케이션의 객체 생성, 초기화, 설정 및 생명주기를 관리합니다. IoC(Inversion of Control)는 애플리케이션의 각 구성 요소의 생성과 의존성을 코드 내부에서 직접 관리하지 않고, 컨테이너가 대신 관리하게 하는 디자인 원칙입니다. Spring IoC 컨테이너는 이 원칙을 따르며, 주로 ApplicationContext 인터페이스를 통해 구현됩니다.

Spring IoC 컨테이너의 주요 역할

  1. 객체 관리: 애플리케이션에서 사용할 객체(빈, Bean)를 생성하고 관리합니다. 객체의 생명주기를 담당하며, 생성 시점과 소멸 시점을 제어합니다.
  2. 의존성 주입(DI): 객체가 필요로 하는 의존성을 외부에서 주입하여 결합도를 낮춥니다. 이를 통해 코드의 유연성과 재사용성을 높이고, 테스트 용이성을 증가시킵니다.
  3. 설정 및 구성 관리: 객체의 설정과 구성을 XML 파일, 애너테이션, 또는 Java Config 클래스를 통해 설정할 수 있습니다.
  4. 컨텍스트 제공: 애플리케이션에서 동일한 컨텍스트를 공유할 수 있도록 지원하며, 이 컨텍스트에서 빈을 검색하고 사용할 수 있습니다.

주요 IoC 컨테이너 인터페이스

  • BeanFactory: 가장 기본적인 IoC 컨테이너로, 객체의 생성과 의존성 주입을 제공합니다. 필요할 때 객체를 생성하는 Lazy Initialization 방식을 사용하므로 메모리 효율적입니다.
  • ApplicationContext: BeanFactory를 확장한 인터페이스로, 보다 많은 기능을 제공하는 상위 개념의 IoC 컨테이너입니다. 애플리케이션 이벤트, 메시지 리소스 처리, 국제화 기능 등을 추가로 제공합니다.

Spring IoC 컨테이너 동작 방식

  1. 객체 설정 파일 로드: XML, 애너테이션, Java Config 등의 설정을 읽어들입니다.
  2. 객체 생성: 설정에 따라 객체를 생성하고, 필요에 따라 빈 초기화 메서드를 호출합니다.
  3. 의존성 주입: 각 객체에 필요한 의존성을 주입하여 서로 연결합니다.
  4. 컨테이너 제공: 생성된 객체(빈)를 애플리케이션에서 사용할 수 있도록 제공합니다.

예시

XML 설정 예시:

<beans>
    <bean id="myBean" class="com.example.MyClass">
        <property name="propertyName" value="value" />
    </bean>
</beans>
Java Config 예시:
@Configuration
public class AppConfig {
    @Bean
    public MyClass myBean() {
        return new MyClass();
    }
}

 

반응형
LIST

'cs정리' 카테고리의 다른 글

스프링 빈 주입시 생기는 문제들  (0) 2024.11.09
SPRING BEAN이란  (0) 2024.11.09
ORM 구현체- HIBERNATE, MYBATIS  (2) 2024.10.30
SPRING BOOT ORM이란?  (0) 2024.10.30
SPRING BOOT JPA란?  (0) 2024.10.30