본문 바로가기

개발/Spring

IoC 컨테이너란

반응형

IoC - Inversion of Control : 의존 관계 주입(Dependency Injection)이라고도 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는게 아니라(new class), 주입 받아 사용하는 방법을 말함.

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

 

빈(Bean) : 컨테이너 안에 있는 객체 즉, IoC 컨테이너가 관리하는 객체 

public class Book{

}

>> 빈이 아니다. 

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

>> 어노테이션으로 오토 스캔으로 빈으로 등록이되는 빈이다. 

의존성 주입을 하고 싶다 > 빈으로등록이 되어야 한다. 
인스턴스는 하나만 만들어도 된다. 싱글톤으로 관리하고 싶다 > IoC 컨테이너 빈으로 등록하여 사용 하면 좋다.
 > 메모리 효율적, 런타임 시 성능 최적화에도 유용하다, 

 컨테이너 : 안에 Ioc 기능을 제공하는 빈들을 담고 있다.

 

스프링 초기 : xml
현재 : 어노테이션을 이용한 의존성 주입 

빈으로 등록 일반적인 클래스를 빈으로 등록 하고 빈으로 등록이 되어 있는 빈을 주입 받아서 사용 할 수 있다. 

빈을 등록하는 여러가지 방법은? 

 1. application.xml 으로 설정하기 

https://bpblog.tistory.com/entry/IoC-applicationxml-%EB%A1%9C-%EB%B9%88-%EC%84%A4%EC%A0%95

2. 컴포넌트 스캔 이용(application.xml 과 어노테이션

https://bpblog.tistory.com/entry/IoC-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8-%EC%8A%A4%EC%BA%94-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98

 

스프링의 최상위는 인터페이스는 BeanFactory
docs.spring.io/spring-framework/docs/5.0.8.RELEASE/javadoc-api/org/springframework/beans/factory/BeanFactory.html

스프링 Bean 으로 등록되면 장점- 스프링이 제공해주는 컨테이너 기능을 사용하는 이유
 - 의존성 관리 
 - 스코프  - 싱글톤 : 하나만 만든다.
                - 프로토 타입 : 매번 다른 객체로 만들어 사용
 - 라이프 사이클 인터페이스를 사용하여 부가적인 작업을 할 수 있다.

ApplicationContext
 - 주로 사용하게될 BeanFactory
 - 메시지 소스 처리기능, 이벤트 발생기능, 리소스 로딩기능 등등.. 

반응형

'개발 > Spring' 카테고리의 다른 글

IoC - Component, 컴포넌트 스캔  (0) 2021.04.06
IoC - Autowire(오토와이어)  (0) 2021.04.04
IoC - ComponentScan  (0) 2021.04.04
IoC - application.xml 로 빈 설정  (0) 2021.04.04
spring-boot-starter-web  (0) 2021.04.04