| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 설정파일분리
- git커스텀
- 아이텀2
- 스프링
- 객체지향프로그래밍
- iterm2
- 깃커스텀
- 깃
- oracle
- 자바
- di
- URLmapping
- IoCContainer
- Java
- viewResolver
- 스프링프레임워크
- annotation
- 객체지향
- 깃허브
- github
- GIT
- Spring
- springframework
- xml
- servlet
- Sts
- macoracle
- 인터페이스
- Interface
- 프레임워크
- Today
- Total
공부만이 살길
Spring은 왜 사용하는걸까? (2) - IoC Container ( Inversion of Control ) 본문
Spring은 왜 사용하는걸까? (2) - IoC Container ( Inversion of Control )
공부만이 살길이야 2024. 1. 24. 02:30Dependency Injection 에 이어 IoC Container에 대해서 알아보도록 하자.
(1)에서 우리는 Spring의 핵심 기능 중 하나는 부품 조립이라고 하였었다.
우리는 스프링에게 어떤 객체를 어떻게 결합하여 달라고 "주문"을 해야한다.
그렇다면 "주문서"가 있어야 할텐데, 이 주문서는 어떻게 작성해야할까?
컴퓨터라면 보통 메인보드, cpu, memory를 정하게 되고 이 내용을 정리한 종이 혹은 파일을 건네주게 된다.
하지만 우리는 소프트웨어를 개발하는 것이다. 소프트웨어 개발의 측면에서는 XML, Annotation을 이용해서 주문서를 작성하게 된다.
컴퓨터를 구매할 때, 부품들을 구매하면 그것을 가져오기 위해 박스에 담는다.
소프트웨어 개발 입장에서는 그 박스가 바로 "Container" 이다.
그런데, 의문점은 왜 DI Container가 아니고, IoC Container일까?
종속성을 주입해서 그 객체를 가지고 결합해서 컨테이너안에 적재한다면, DI 라는 명칭이 더 잘 어울릴 것 같은데..
사실 이유는 존재한다.
일체형과 결합형으로 나누어서 예를 들 수 있다.
일체형의 경우, 내가 A라는 완성된 클래스를 생성했다고 가정하면 이후에 B, C, D가 동시에 만들어지게 된다.
결합형의 경우, 컴퓨터를 조립하는 것은 예를 들면 CPU, 메인보드 등의 작은 부품을 하나 하나 만들어 점점 커져가는 하나의 제품을 만드는 것이다.
작은 부품이 먼저 생성되고, 이후 큰 부품으로 조립되고. 또 더 큰 부품이 생성되고, 이후 또 조립되는 과정을 거치게 된다.
이 과정은 작은 것부터 역순으로 점점 커지면서 완성품으로 결합하는 것인데, 이 것을 Inversion of Control 라고 한다.
따라서 소프트웨어 개발에 있어, 이러한 spring의 기능을 활용할 때, Dependency Container가 아니라,
IoC Container라고 명칭이 붙게 된 것이다.

위 예제를 통해 주문서가 무엇인지를 알아보자.
setting.xml 내 <bean> 태그에서 각 객체를 만들고, <bean> 태그 내 <property> 태그안에서 조립할 객체와 ref, value 타입을 지정해서 주문서를 생성한다고 볼 수 있다.
<property name="exam" ref="exam"></property> 에서 name 속성은 setExam처럼 호출하는 함수의 느낌으로, 실제 조립하는 것을 의미하지만, 규약에 따르면 name 속성에 대한 표기는 set은 생략, 대문자는 소문자로 치환하여 표기한다고 한다.
ref & value 내에는 name 속성 객체에 해당하는 이름을 넣어주는 것이다. 즉 조립할 객체를 넣는다는 의미이다.
value 타입의 경우 value, 레퍼런스 타입일 경우 ref를 활용하면된다.
말이 길어졌지만, 지금 보았던 이러한 setting.xml내 bean을 통해서
작성한 이러한 결합 관련 주문서를 포함한 것을 IoC Container라고 한다.
공부자료 : youtube 뉴렉처 [ 스프링 프레임워크 강좌 4강 ]
'Spring framework' 카테고리의 다른 글
| DI 지시서 Setting.xml 에서 DI를 작성하는 다양한 방법 (0) | 2024.01.31 |
|---|---|
| ApplicationContext - DI를 생성하고 조립 및 활용할 수 있게하는 객체 (1) | 2024.01.31 |
| STS, MarketPlace Plugin 다운로드 없이 Eclipse로 Spring Project 생성하기 (0) | 2024.01.24 |
| Spirng은 왜 사용하는걸까 ? (1) - DI ( Dependency Injection ) (1) | 2024.01.18 |
| 2024년 1월 스프링 공부 시작합니다. (0) | 2024.01.18 |