IoC (Inversion of Control, 제어의 역전)
의존관계주입(Dependency Injection)이라고도 하며, 어떤 객체가 사용하는 의존객체를 직접 만들어 사용하는게 아닌, 주입받아 사용하는 방식을 말함.
즉 인스턴스의 생성부터 소멸까지의 생명주기를 개발자가 아닌 컨테이너가 대신 해준다는 뜻
스프링 IoC/DI 컨테이너
BeanFactory : 스프링의 컨테이너 기능을 담당
- 스프링의 설정 파일에 등록된 bean 객체를 관리하는 가장 기본적인 컨테이너 기능 제공
- 컨테이너가 구동될 때 객체를 생성하는 것이 아닌 클라이언트의 요청에 의해서만 객체를 생성(lazy loading)
어플리케이션 컴포넌트의 중앙저장소
빈 설정 소스(XML, Java config..)로 부터 빈 정의를 읽어 들이고, 빈을 구성하고 제공.
빈
자바 빈
데이터를 표현하는 것을 목적으로 하는 자바클래스(클래스에 값을 저장하는 속성필드, get, set 메솓, 기본생성자 포함)
스프링 빈
스프링 IoC 컨테이너가 관리하는 객체.
장점
- 의존성관리
- 스코프
- singleton : 기본
- prototype : 어플리케이션 요청시 마다 스프링이 새 인스턴스 생성
- request : HTTP요청별로 인스턴스화 되어 요청이 끝나면 소멸(Spring MVC 용도)
- session: HTTP 세션별로 인스턴스화 되어 세션이 끝나면 소멸(Spring MVC 용도)
- global session : 포틀릿 기반의 웹어플리케이션 용도 , 전역세션 스코프의 빈은 같은 스프링 MVC를 사용한 포탈 어플리케이션 내의 모든 포틀릿 사이에 공유 가능
- thread: 새 스레드 에서 요청하면 새로운 bean인스턴스를 생성, 같은 스레드에선 항상 같은 bean반환
- custom : org.springframework.beans.factory.config.Scope를 구현하고 커스텀 스코프를 스프링의 설정에 등록하여 사용
- 라이프 사이클 인터페이스
- 객체 생성 -> 의존설정 -> 초기화 -> 소멸
BeanFactory 상속받아 기본적인 컨테이너 기능 + 확장 기능 제공
확장한 기능
- 메시지 소스 처리 기능(i18n)
- 이벤트 발행기능
- 리소스 로딩 기능
- 트랜잭셩 관리
- 등등..
컨테이너의 구동되는 시점에 bean에 등록되어 있는 클래스를 객체화하는 즉시 로딩 방식.
ApplicationContext 와 BeanFactory 로딩 차이
참고자료
https://www.inflearn.com/course/spring-framework_core
https://jjunii486.tistory.com/84
https://javaslave.tistory.com/45
http://blog.naver.com/PostView.nhn?blogId=edy5016&logNo=221280377077
'프로그래밍 > SPRING' 카테고리의 다른 글
[스프링기본 : IoC 컨테이너] Environment - Profile (0) | 2019.10.10 |
---|---|
[스프링 기본 : IoC 컨테이너]빈 스코프 (0) | 2019.10.06 |
[스프링 기본 : IoC 컨테이너] @Component 와 컴포넌트 스캔 (0) | 2019.10.06 |
[스프링 기본 : IoC 컨테이너] @Autowired (0) | 2019.10.06 |
[스프링 기본 : IoC 컨테이너] Application Context와 빈 설정 방법 (0) | 2019.10.06 |
댓글