Spring Framework 특징(스프링 컨테이너, 빈, 빈 스코프)

김병수·2022년 10월 13일
0
post-thumbnail

스프링 컨테이너(Spring Container)

스프링의 핵심 컴포넌트로서 내부의 존재하는 애플리케이션 빈(인스턴스화된 객체)의 생명주기를 관리하는 역할이다. 빈의 인스턴스화, 구성, 전체 생명 주기 및 제거, 서로 다른 빈의 연결까지 처리한다.

스프링 컨테이너의 사용이유

객체를 생성하기 위해서는 new 키워드를 사용하여야 하는데 애플리케이션 내에 이러한 객체가 무수히 많이 존재하고 서로 참조하게 되어있다. 이는 의존성이 높아지므로 객체지향프로그래밍에 맞지 않다. 스프링 컨테이너는 이러한 의존성을 낮추기 위해 사용한다.

스프링 컨테이너의 종류

BeanFactory

  • 스프링 컨테이너의 최상위 인터페이스

  • BeanFactory는 빈을 등록하고 생성하고 조회하고 돌려주는 등 빈을 관리하는 역할

  • getBean() 메소드를 통해 빈을 인스턴스화할 수 있음

  • @Bean이 붙은 메서드의 명을 스프링 빈의 이름으로 사용해 빈 등록

ApplicatoinContext

  • BeanFactory의 기능을 상속받아 제공합니다.

  • 빈을 관리하고 검색하는 기능을 BeanFactory가 제공하고 그 외에 부가기능을 제공합니다.

빈(Bean)

스프링 컨테이너가 관리하는 자바 객체(인스턴스화된 객체), 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 한다. @Bean 어노테이션이 적힌 메서드를 모두 호출하여 반환된 객체를 스프링 컨테이너에 등록한다.

빈 스코프(Bean Scope)

빈이 사용되어지는 범위, 사용자 정의 범위를 생성할 수도 있다.

싱글톤(Singleton) 스코프

클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴. 스프링 컨테이너에선 해당 빈의 인스턴스를 오직 하나만 생성해서 사용하는 것을 의미한다. 스프링 컨테이너의 시작과 함께 생성되어 컨테이너 종료까지 유지된다. 이때 소멸 메서드도 자동으로 실행된다. 해당 bean definition와 일치하는 ID 또는 ID를 가진 빈에 대한 모든 요청은 스프링 컨테이너에서 해당 특정 빈 인스턴스를 반환한다.

profile
BE 개발자를 꿈꾸는 대학생

0개의 댓글