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 과 어노테이션
스프링의 최상위는 인터페이스는 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 |