일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 카카오
- c++
- 스마일게이트
- 투포인터
- 보석쇼핑
- 코딩테스트
- 1편
- 알고리즘
- 삼성 #코테 #2020상반기 #c++
- BFS
- 유니온파인드
- 카카오인턴
- 소감
- 중반부
- 식단
- BaekJoon
- IBK기업은행 #기업은행 #디지털 #직무 #정리
- 서버개발캠프
- 코테
- 백준
- Smilegate
- Algorithm
- Union-find
- LIS #Algorithm #요소추적
- Today
- Total
짱아의 개발 기록장
6강. IoC 컨테이너 본문
IoC 컨테이너는 주로 BeanFactory나 ApplicationContext를 사용한다.
ApplicationContext는 BeanFactory를 상속받고 더 많은 기능을 제공하고 있기 때문에
이 프로젝트에서는 주로 ApplicationContext를 사용할 예정이다.
IoC컨테이너는 Bean을 만들고 Bean사이의 의존성을 엮어주고 최종적으로 Bean을 제공해준다.
pet-clinic프로젝트에서는 OwnerController, OwnerRepository, PetController, PetRepository가 IoC컨테이너에 Bean으로 등록되어 있다. 모든 클래스가 Bean으로 등록된 것은 아니다!!
위 사진처럼 녹생 콩 모양이 클래스 옆에 표시된다면, Bean으로 등록된 것이다.
📌의존성 주입은 Bean끼리만 가능하다! => 즉, Spring IoC컨테이너에 들어있는 객체들끼리만 의존성 주입 가능,, (물론 외부에 있는 것으로 의존성 주입을 하기도 하지만 거의 그렇게 하지않고 권장하지도 않는다.)
[대략적인 흐름]
IoC컨테이너 중에서도 ApplicationContext로 부터 같은 Type의 Bean을 제공받는다.
즉, ApplicationContext에는 모든 Bean들이 다 담겨있다.
ex) OwnerController는 ApplicationContext로 부터 OwnerRepository와 VisitRepository Bean을 제공받는다.(의존성 주입)
위 사진에서 보면, Constructor Injection으로 DI를 하고 있는데
OwnerRepository Bean을 제공받아서 출력한 -> this.owners의 해시값과
ApplicationContext Bean을 제공받아서 출력한 -> applicationContext.getBean(OwnerRepository.class)의 해시값이
동일하다..!!
Singleton Scope의 객체
매번 새로 만드는 것이 아니라 계속해서 재사용하는 것,,,
멀티스레드 상황에서 Singleton Scope을 계속 구현하는 것은 매우 번거로운 일인데
IoC컨테이너를 사용하면 편리하고 손 쉽게 Bean을 가져다 쓰면서 Singleton Scope을 달성할 수 있다.
'개발 프로젝트 정리 > [예제로 배우는 스프링 입문] 백기선님 강의 정리' 카테고리의 다른 글
8강. 의존성 주입(Dependency Injection) (0) | 2021.01.04 |
---|---|
7강. 빈(Bean) (0) | 2021.01.02 |
5강. Inversion of Control (0) | 2020.12.29 |
4강. 프로젝트 과제 풀이 (0) | 2020.12.28 |
3강. 프로젝트 살펴보기 (0) | 2020.12.27 |