[Spring] Container, Bean

Gavin Ariel Lee·2021년 9월 1일
0

Container

Container란 개발자를 대신하여 인스턴스의 생명 주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 제공하도록 하는 것으로 작성한 코드를 참조하여 객체의 생성과 소멸을 컨트롤

Spring Container

자바 객체를 담고 있다.
Bean들의 생명 주기 관리
어플리케이션을 구성하는 Bean들을 관리하기위해 IoC를 사용

Container 종류

  • BeanFactory
    빈 객체를 생성하고 관리하는 클래스
    팩토리 패턴을 구현한 것
    getBean()이 호출되면, 팩토리는 의존성 주입을 이용해 빈을 인스턴스화하고 빈의 특성을 설정하기 시작
  • ApplicationContext
    빈 팩토리를 확장한 향상 된 컨테이너
    기본적인 기능은 빈 팩토리와 동일, 스프링이 제공하는 각종 부가 서비스를 추가 제공
    -> 국제화 지언 텍스트 메시지 관리, 이미지 파일 로드, 리스너로 등록된 빈에게 이벤트 발생 통보

BeanFactroy는 getBean()이 호출된 시점에서야 해당 빈을 생성하지만 ApplicationContext는 컨텍스트 초기화 시점에 모든 싱글톤 빈을 미리 로드한 후 애플리케이션 기동 후에는 빈을 지연 없이 얻을 수 있다.

Bean

  • Spring IoC Container가 관리하는 자바 객체, Spring Bean Container에 존재하는 객체
    (new 연산자로 생성한 객체는 빈이 아님, ApplicationContext.getBean()로 얻어질 수 있는 객체는 빈)
  • Spring IoC Contatiner에 의해 인스턴스화, 관리, 생성
  • Spring Bean Container는 의존성 주입을 통해 Bean 객체를 사용할 수 있도록 해준다
  • Spring에서 Bean은 보통 Singleton으로 존재
  • Spring에서 POJO(plain, old java object)를 Beans라고 부른다.
  • Container에 공급하는 설정 메타 데이터(XML 파일)에 의해 생성
    (메타 데이터를 통해 Bean의 생성, Bean Life Cycle, Bean Dependency(종속성) 등을 알 수 있음)

Bean 생성 방식

  • Component Scanning
    @ComponentScan, @Component Anotation을 사용해서 Bean을 등록하는 방법
    @ComponentScan은 @Component이 부여된 Class를 찾아서 자동으로 Bean을 등록해주는 역할
    @ComponentScan이 붙어있는 Class가 있는 package에서부터 모든 하위 package의 모든 Class를 찾아서 @Component나 @Component를 사용하는 다른 Annotation을 사용하는 Class를 찾는다.

  • Configuration
    - Java Class에 설정하는 방법
    Java class에서 @Configuration Annotation을 사용해서 직접 @Bean을 등록
    @Bean Annotation을 사용해 직접 Bean을 정의하면 자동으로 Bean으로 등록
    (@Configuration Annotation을 보면 이 Annotation도 내부적으로 @Component를 사용하기 때문에 @ComponentScan의 검색 대상)
    - XML에 설정하는 방법
    XML 파일에 직접 Bean을 등록하여 Application의 Bean을 설정

profile
As you wish

0개의 댓글