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
스프링 프레임워크 핵심 기술 - 인프런
이번 강좌는 스프링 부트를 사용하며 스프링 핵심 기술을 학습합니다 따라서 스프링 부트 기반의 프로젝트를 사용하고 있는 개발자 또는 학생에게 유용한 스프링 강좌입니다. 초급 웹 개발 Java Spring 온라인 강의
www.inflearn.com
https://jjunii486.tistory.com/84
스프링 기초] 컨테이너와 IoC (Inversion of Control, 제어의 역전) 란?
웹개발을 배우면서 항상 개념에 대한 부분이 너무 어렵고 공부를 하고 나면 까먹고 또 까먹는다. 컨테이너 또한 JAVA 기초와 함께 MVC를 배우면서 배웠으나 또 까먹었다...그런데 스프링에서도 컨테이너가 나온다...
jjunii486.tistory.com
https://javaslave.tistory.com/45
Spring Bean Scope 정리
Spring Bean Scope 스프링에서 Bean으로 지정된 객체는 기본적으로 싱글톤 객체로 관리된다. 하지만 요구사항 과 구현기능 등의 필요에 따라서 비싱글톤이 필요한 경우도 많다. 스프링에서는 이를 명시적으로 구분..
javaslave.tistory.com
http://blog.naver.com/PostView.nhn?blogId=edy5016&logNo=221280377077
스프링 빈 객체의 라이프사이클
스프링 컨테이너는 빈 객체를 생성하고, 프로퍼티를 할당하고, 초기화를 수행하고 사용이 끝나면 소멸시키...
blog.naver.com
'프로그래밍 > 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 |
댓글