- IoC(제어반전)란?
- IoC란, Inversion of Control의 약자로 프로그램을 구동하는데 필요한 객체에 대한 생성/변경 등의
관리를 프로그램을 개발하는 사람이 아닌, 프로그램을 구동하는 컨테이너에서 직접 관리하는 것을 말함.
- 스프링은 IoC 구조를 통해 구동 시 필요한 객체의 생성부터 생명주기까지 해당 객체에 대한 관리를 직접 수행함.
- IoC 컨테이너
- 스프링에서 관리하는 객체를 "Bean(빈)"이라고 하고, 해당 빈을 관리한다는 의미로
컨테이너를 "Bean Factory"라고 함. - IoC 컨테이너의 역할
1) 객체의 생명주기와 의존성을 관리
2) VO(DTO / POJO) 객체의 생성 / 초기화 / 소멸 등의 처리를 담당함.
3) 개발자가 직접 객체를 생성할 수 있지만, 해당 권한을 컨테이너에게 맡김으로써
소스코드의 구현 시간을 단축할 수 있음. - IoC 컨테이너와 Bean 객체
Bean 빈 |
- 스프링이 IoC 방식으로 관리하는 Class - 스프링이 직접 생성과 제어를 담당하는 객체 |
Bean Factory 빈 팩토리 |
- 스프링의 IoC를 담당하는 핵심 컨테이너 - Bean을 등록, 생성, 조회, 반환하는 기능을 담당 |
ApplicationContext 애플리케이션 컨텍스트 |
- BeanFactory를 확장한 IoC 컨테이너 - Bean을 등록하고 관리하는 기능은 BeanFactory와 동일하지만, 스프링이 제공하는 각종 부가 서비스를 추가 제공함 |
-------------------------------------------------------------------------------------------------------------------------------------------------
- DI(의존성 주입)란?
- DI란, Dependency Injection의 약자로 IoC 구현의 핵심 기술이라고 할 수 있음.
- 사용하는 객체를 직접 생성하여 만드는 것이 아니라, 컨테이너가 Bean의 설정 정보를 읽어와 자동으로 해당 객체에 연결하는 것을 의미함
- 의존성을 주입 받게 되면 이후 해당 객체를 수정해야할 상황이 발생했을 때, 소스코드의 수정을 최소화 할 수 있음 - DI의 장점
1) 개발자가 작성할 코드가 단순해짐
2) 객체 사이의 종속 관계(결합도)를 해소할 수 있음
※ 객체 사이의 종속 관계(결합도) : 한 클래스에서 필드 객체를 생성할 때 발생하는 두 객체 간의 관계를 말하며,
객체 간 내용이 수정될 경우 영향을 미치는 정도를 나타냄 - DI 종류
- Setter 메소드를 통한 의존성 주입
: 의존성을 주입 받는 Setter 메소드를 만들고 이를 통해 의존성 주입
: <property> 태그를 사용함
- 생성자를 통한 의존성 주입
: 필요한 의존성을 포함하는 클래스에 생성자를 만들고 이를 통해 의존성 주입
: <constructor-arg> 태그를 사용함
- 메소드를 통한 의존성 주입 : 의존성을 입력 받는 일반 메소드를 만들고 이를 통해 의존성 주입
'Framework > Spring' 카테고리의 다른 글
Mybatis (0) | 2025.02.06 |
---|---|
Spring DI - Annotation (0) | 2025.02.06 |
Spring Framework (0) | 2025.02.03 |
Framework 기본 개념 (0) | 2025.02.03 |