Spring Bean, IoC 컨테이너, IoC

청포도봉봉이·2023년 3월 29일
0

메모오

목록 보기
2/11
post-thumbnail

Spring Bean

Spring에서 Bean은 Spring IoC(Inversion of Control) 컨테이너가 관리하는 객체를 말합니다. 즉, Spring에서 애플리케이션 개발을 할 때 필요한 객체들을 Bean으로 등록하고, 이를 Spring IoC 컨테이너가 생성하고 관리합니다.

Spring에서 Bean을 등록하는 방법은 크게 두 가지입니다.

  • XML 설정 파일을 이용한 등록
    • XML 설정 파일에 <bean> 태그를 이용하여 등록합니다.
    • <bean> 태그는 id, class, scope 등을 지정할 수 있습니다.
  • 어노테이션을 이용한 등록
    • @Component, @Service, @Controller, @Repository 등의 어노테이션을 이용하여 등록합니다.
      이때 등록된 클래스는 Bean으로 등록됩니다.

Spring IoC Container

Spring IoC(Inversion of Control) 컨테이너는 Spring 프레임워크에서 핵심적인 역할을 수행하는 컨테이너입니다. 객체를 생성하고, 관리하며, 의존성 주입(Dependency Injection)을 제공합니다.

Spring IoC 컨테이너는 애플리케이션 개발을 할 때 필요한 객체들을 Bean으로 등록하고, 이를 관리합니다. 이를 통해 객체 간의 결합도(Coupling)를 낮출 수 있으며, 유지보수성과 확장성을 높일 수 있습니다.

Spring IoC 컨테이너는 크게 두 가지 종류가 있습니다.

  • BeanFactory
    • BeanFactory는 가장 기본적인 IoC 컨테이너입니다.
    • Bean의 생성과 소멸을 관리하며, 의존성 주입도 제공합니다.
    • Bean이 필요한 시점에 생성됩니다.

  • ApplicationContext
    • ApplicationContext는 BeanFactory를 상속하며, 추가적인 기능을 제공합니다.
    • 메시지 리소스 처리, 이벤트 발행, AOP(Aspect-Oriented Programming) 등의 기능을 제공합니다.
    • Bean이 컨테이너에 등록될 때 미리 생성됩니다.
    • Spring IoC 컨테이너는 XML 설정 파일, Java Config, 어노테이션 등을 통해 Bean을 등록할 수 있습니다. 또한, Bean의 스코프(Scope)도 지정할 수 있으며, Singleton, Prototype, Request, Session, Global Session, WebSocket 등 다양한 스코프를 제공합니다.

Spring IoC 컨테이너는 Spring Framework의 핵심이며, 애플리케이션 개발에서 중요한 역할을 수행합니다.


Spring IoC

Spring IoC(Inversion of Control)는 객체 지향 프로그래밍에서 발생하는 문제 중 하나인 의존성 관리를 해결하기 위한 디자인 패턴입니다.

전통적인 객체 지향 프로그래밍에서는 객체들이 서로 의존하는 경우가 많이 발생합니다. 이 때, 의존하는 객체를 직접 생성하고, 조합하게 되면 결합도(Coupling)가 높아져서 유지보수가 어려워지는 문제가 발생합니다.

Spring IoC는 이 문제를 해결하기 위해, 객체 생성과 의존성 주입을 개발자가 관리하지 않고, 프레임워크에서 관리하도록 하는 방식입니다. 즉, 객체 생성과 의존성 주입을 컨테이너(Container)가 대신 수행하도록 하는 것입니다.

Spring IoC 컨테이너는 객체의 라이프사이클을 관리하고, 객체 간의 의존성을 주입(Dependency Injection)합니다. 이를 통해 개발자는 객체 생성과 의존성 주입에 대한 코드를 작성할 필요 없이, 필요한 객체를 컨테이너에 등록하기만 하면 됩니다.

Spring IoC는 XML 설정 파일, Java Config, 어노테이션 등을 통해 객체를 등록하고, 의존성을 주입합니다. 이를 통해 객체 간의 결합도를 낮추고, 유지보수성과 확장성을 높일 수 있습니다.

Spring IoC는 Spring Framework의 핵심적인 기술이며, Spring을 사용한 애플리케이션 개발에서 매우 중요한 역할을 합니다.

profile
자존감 낮아질 시간에 열심히 공부하고 커밋하자😊😊

0개의 댓글