본문 바로가기

Spring/Spring

(SPRING) IoC 컨테이너 - 스프링 IoC 컨테이너와 빈

Inversion of Control

의존 관계 주입(Dependency Injection)이라고도 하며, 어떤 객체가 사용하는 의존 객체를  직접 만들어 만들어 사용하는 게 아니라, 주입받아 사용하는 사용하는 방법을 말 함. 스프링 IoC 컨테이너

 

  • BeanFactory  : 스프링 Ioc의 가장 최상위에 있는 interface

https://docs.spring.io/spring-framework/docs/5.0.8.RELEASE/javadoc-api/org/springframework/beans/factory/BeanFactory.html

 

BeanFactory (Spring Framework 5.0.8.RELEASE API)

The root interface for accessing a Spring bean container. This is the basic client view of a bean container; further interfaces such as ListableBeanFactory and ConfigurableBeanFactory are available for specific purposes. This interface is implemented by ob

docs.spring.io

이것은 과연 빈 일까? no! 그냥 자바 빈이다.

public class Book {

    private Date created;

    private BookStatus bookStatus;

    public Book(BookStatus bookStatus) {
        this.bookStatus = bookStatus;
    }

    public Date getCreated() {
        return created;
    }

    public void setCreated(Date created) {
        this.created = created;
    }
}

이건 빈이다. - yes! @Repository라는 애노테이션을 붙였기 때문에 오토스캔을 통해 빈으로 등록이 된다.

@Repository
public class BookRepository {
    public Book save(Book book){
        return null;
    }
}

 

  •  애플리케이션 컴포넌트의 중앙 저장소. 
  •  빈 설정 설정 소스로부터 빈 정의를 읽어 들이고, 빈을 구성하고 제공한다.

 

: 스프링 IoC 컨테이너가 관리하는 객체.

장점

  • 의존성 관리 
  • 스코프
  • 싱글톤: 하나 
  • 프로포토 타입: 매번 다른 객체 
  • 라이프사이클 인터페이스

 

https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-introduction

 

Core Technologies

For a fallback match, the bean name is considered a default qualifier value. Thus, you can define the bean with an id of main instead of the nested qualifier element, leading to the same matching result. However, although you can use this convention to ref

docs.spring.io

ApplicationContext 

  • BeanFactory 
  • 메시지 소스 처리 기능 (i18n) 
  • 이벤트 발행 기능 
  • 리소스 로딩 기능 

 ...