[Spring] 스프링 컨테이너와 빈

·2022년 10월 13일
0

Spring

목록 보기
6/24
post-thumbnail

스프링 컨테이너

스프링 프레임워크의 핵심 컴포넌트

컨테이너

의존관계 주입을 대신해 객체를 생성하고 관리하며 의존관계를 연결해주는 것

스프링 컨테이너

  • 내부에 존재하는 애플리케이션 빈의 생명주기(빈의 생성, 관리, 제거 등의 역할)를 관리한다.
  • 객체 간의 의존성을 낮추기 위해 사용된다.

💡빈(Bean) : 스프링 컨테이너에 등록된 객체

  • new 연산자, 인터페이스 호출 등의 객체를 생성하는 일을 스프링 컨테이너가 대신해서 수행한다.
    • 객체 생성과 같은 제어 흐름을 외부에서 관리하는 것
  • ApplicationContext : 스프링 컨테이너, 인터페이스로 구현되어 있다.
    • 해당 인터페이스를 통해 구현되어 진 것들이 스프링 컨테이너라고 할 수 있다.

💡 스프링 컨테이너 구현 : Configuration Metadata(구성정보)를 파라미터로 받아 사용
new AnnotationConfigApplicationContext(구성정보.class)

사용되는 애너테이션

  • @Configuration : 구성정보를 담당하는 것을 설정할 때 사용
  • @Bean : 해당 메서드를 통해 생성된 객체를 스프링 컨테이너에 자동적으로 등록

BeanFactory

  • 스프링 컨테이너의 최상위 인터페이스
  • getBean() 메소드를 통해 빈을 인스턴스화 할 수 있다.
  • @Bean이 붙은 메서드의 명을 스프링 빈의 이름으로 사용해 빈 등록을 한다.
  • 빈을 등록, 생성, 조회하는 등의 관리 역할을 한다.

ApplicationContext

  • BeanFactory 의 기능을 상속받아 제공
  • 빈을 관리하는 BeanFactory 뿐만 아니라 그 외의 부가 기능을 제공한다
    • MessageSource: 메세지 다국화를 위한 인터페이스
    • EnvironmentCapable: 개발, 운영 등 환경변수 등으로 나눠 처리하고, 애플리케이션 구동 시 필요한 정보들을 관리하기 위한 인터페이스
    • ApplicationEventPublisher: 이벤트 관련 기능을 제공하는 인터페이스
    • ResourceLoader: 파일, 클래스 패스, 외부 등 리소스를 편리하게 조회

    💡 BeanFactory와 ApplicationContext은 같은 기능을 하지만 ApplicationContext의 부가기능 덕분에 ApplicationContext를 더 사용하는 편이다.

빈(Bean)

스프링 컨테이너에 의해 관리되는 재사용 소프트웨어 컴포넌트

빈의 정의

  • 인스턴스화된 객체
  • 스프링 컨테이너에 등록된 객체 -> 스프링 빈

빈의 특징

  • 빈은 클래스의 등록정보, getter/setter 메서드를 포함한다.
  • 컨테이너에 사용되는 설정 메타데이터로 생성된다.

빈 접근 방법

  • ApplicationContext 사용하여 빈을 불러와야 한다.
  • getBean(빈이름, 타입) 또는 getBean(타입)을 사용한다.
profile
🧑‍💻백엔드 개발자, 조금씩 꾸준하게

0개의 댓글