티스토리 뷰
1.IoC
IoC(Inversion of Control)는 우리말로 '제어의 역전'이라고 번역하여 사용하고 있습니다.
토비의 스프링 3.1에서는 IoC를 아래와 같이 설명하고 있습니다.
스프링 애플리케이션에서는 오브젝트의 생성과 관계설정, 사용, 제거 등의 작업을 애플리케이션 코드 대신
독립된 컨테이너가 담당한다. 이를 컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있다고 해서 IoC라고 부른다.
그래서 스프링 컨테이너를 IoC 컨테이너라고도 한다.
즉 프로그램에 대한 흐름을 개발자가 아닌, 프레임워크가 주도하며 관리하기 때문에 제어의 흐름이 바뀌었다고 하여 제어의 역전이라고 부릅니다. 이러한 제어의 흐름을 스프링 프레임워크가 주도하기 때문에, 객체를 Spring Bean으로 등록하여 DI(Dependency Injection) 즉 의존 주입을 할 수 있습니다.
Bean이란 자바 객체를 생각하시면 됩니다. 그러나 Spring에서는 IoC 컨테이너가 관리하는 객체로 설정된 자바 객체를 Bean이라고 보통 부릅니다. 의존성 주입을 받으려면 이러한 자바 객체를 Spring Bean으로 등록을 해야 합니다. Spring Bean으로 등록되면 의존성 및 객체의 범위(ex singleton, prototype..), 라이프 사이클 등을 관리할 수 있는 장점이 있습니다.
IoC를 컨테이너라고 말하는 이유는, 화물 운송에 주로 쓰이는 철제 상자 컨테이너와 같이 격리된 공간에서 IoC가 관리하는 객체인 Spring Bean들을 읽어 들이고 구성 및 제공하여 관리하기 때문에 IoC컨테이너라고 합니다.
https://055055.tistory.com/9?category=852871
2.BeanFactory / ApplicationContext
스프링에서 IoC를 담당하는 컨테이너를 BeanFactory(빈 팩토리) 또는 ApplicationContext(애플리케이션 컨텍스트)라고 부르기도 합니다. 객체의 생성과 객체 사이의 런타임 관계를 설정하는 단순 DI(Dependency Injection) 관점으로 볼 때는 컨테이너를 BeanFactory라고 합니다. 그러나 스프링 컨테이너는 단순한 DI 작업 보다 더 많은 일들을 합니다. DI를 위한 BeanFactory에 엔터프라이즈 애플리케이션을 개발하는 데 필요한 여러 가지 기능을 추가한 것을 ApplicationContext라고 부릅니다.
BeanFactory와 ApplicationContext에 대해 이야기 하자면, 먼저 BeanFactory는 스프링 IoC컨테이너 최상위에 있는 인터페이스입니다. 그리고 ApplicationContext는 BeanFactory의 서브 인터페이스들인 ListableBeanFactory와 HierachicalBeanFactory라는 두 개의 인터페이스를 상속하기 때문에 BeanFactory를 상속하고 있습니다.
BeanFacotry가 Bean 생성 및 LifeCycle을 관리한다면, ApplciationContext는 Bean관리 뿐만 아니라 리소스 로딩, 이벤트 발행, 다국어 등의 추가적인 기능들을 갖고 있기 때문에 더 많이 사용하고 있습니다.
1, ResourceLoaderAware's setResourceLoader
2. ApplicationEventPublisherAware's setApplicationEventPublisher
3. MessageSourceAware's setMessageSource
4. ApplicationContextAware's setApplicationContext
출처 : 스프링 프레임워크 핵심 기술 - IoC 컨테이너 1부 : 스프링 IoC 컨테이너와 빈 : 백기선
토비의 스프링 3.1 : 이일민
'jvm언어관련 > Spring(SpringBoot)' 카테고리의 다른 글
springboot redis (NoSQL) 사용 (0) | 2019.12.25 |
---|---|
restdocs XPath사용 (0) | 2019.12.09 |
HttpMessageConverters (0) | 2019.07.14 |
Springboot Http/Https 사용하기(멀티 커넥트) (0) | 2019.05.20 |
springboot maven profiles 설정 (0) | 2019.05.01 |
- Total
- Today
- Yesterday
- update set multi
- gradle
- 뱅크샐러드 유전자
- update query multi row
- effectivejava
- 그레이들
- 이것이 자바다
- spring-boot-starter-data-redis
- MSSQL
- 몽고DB 완벽가이드
- 업데이트 쿼리
- update set multiple
- 슬랙
- SpringBoot
- update query mutiple row
- update query
- 뱅셀 유전자
- 싱글턴
- update query set multiple
- visual studio code
- Slack
- springboot https
- java
- 다중 업데이트
- 이펙티브자바
- 슬랙봇
- 뱅크샐러드
- vue.js
- multiple row update
- 슬랙 /
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |