Spring 컨테이너

Bong2·2022년 4월 19일

Spring

목록 보기
3/9

컨테이너란??

  • 인스턴스의 생명주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 제공하도록 하는 것
  • 객체의 생성과 소멸을 컨트롤함

Servlet Container

  • 웹버서와 통신하기 위하여 소켓을 생성하고, 특정 포트에 리스닝하고, 스트림을 생성하는 등으 복잡한 일들을 할 필요가 없게 해준다.
  • servlet의 생성부터 소멸까지의 일련의 과정을 관리
  • Tomcat

스프링 컨테이너

  • 자바 객체를 담고 있다.
  • 언제든지 스프링 컨테이너로 부터 필요한 객체를 가져와 사용
  • Bean들의 생명주기를 관리
  • 애플리케이션을 구성하는 Bean들을 관리하기 위해 IOC를 사용

Bean : Spring Ioc 컨테이너가 관리하는 자바 객체 (Spring에 의하여 생성되고 관리되는 자바 객체)
IOC : 객체의 생성을 특별한 관리 위임 즉 프레임워크가 해준다. 사용자는 객체를 직접 생성하지 않고, 객체의 생명주기를 컨트롤하는 주체는 다른 주체가된다. 사용자의 제어권이 프레임워크에 있다.

종류

  • 빈팩토리(BeanFactory)
  • 어플리케이션 컨텍스트(ApplicationContext)

BeanFactory

  • 빈을 등록하고 생성하고 조죄하고 돌려주고, 그 외에 부가적인 빈을 관리하는 기능
  • 빈의 정의는 즉시 로딩하는 반면, 빈자체가 필요하게 되기전까지는 인스턴스화하지 않는다.
  • getBean()이 호출되면 팩토리는 의존성 주입을 이용해 빈을 인스턴스화하고 빈의 특성을 설정하기 시작
BeanFactory factory = new XmlBeanFactory(new FileInputStream("bean.xml"));
//의존성 주입하여 인스턴스화
MyBean myBean = (Mybean) factory.getBean("myBean");

ApplicationContext

  • 빈 팩토리를 상속한, 빈 팩토리를 확장한 향상된 컨테이너
  • 기본적인 기능은 빈 팩토리와 동일하고 스프링이 제공하는 각종 부가 서비스를 추가 제공
    • 국제화가 지원되는 텍스트 메시지를 관리해 준다.
    • 이미지같은 파일 자원을 로드 할 수 있는 포괄적인 방법을 제공해준다.
    • 리너스로 등록된 빈에게 이벤트 발생을 알려준다.
ApplicationContext context = new ClassPathXmlApplicationContext("conf/bean.xml");

MyBean bean = context.getBean("myBean");

차이점

  • 빈 팩토리 : 처음으로 getBean()이 호출되는 시점에서 빈이 생성(lazy loading)
  • 애플리케이션 컨텍스트 : 컨텍스트 초기화 시점에 모든 싱글톤 빈을 미리 로드한 후 애플리케이션 기동 후에는 빈을 지연없이 얻을 수 있음(Pre-Loading)
profile
자바 백엔드 개발자로 성장하자

0개의 댓글