TIL

IOC/DI

oceanflow 2025. 2. 6. 23:52

IOC(제어의 역전)

객체의 생성과 관리 권한을 개발자가 아닌 스프링 컨테이너가 담당하는 것을 말한다.

기본적으로는 개발자가 객체를 직접 생성하고 관리했지만, 스프링에서는 컨테이너가 객체 생성,

주입, 소멸을 관리한다.

 

IOC의 장점은 다음과 같다.

객체간의 낮은 결합도

코드의 재사용성 증가

유지보수의 용이성

테스트 용이성 향상

 

DI(의존성 주입)

스프링이 객체 간의 의존성을 자동으로 주입해주는 것을 의미한다.

한 객체가 다른 객체를 사용할 떄, 해당 객체를 직접 생성하지 않고

스프링이 주입해주는 방식이다.

IOC를 구현하는 방식 중 하나

 

의존성 주입 방법

 

1. 생성자 주입(권장)

객체 생성 시점에 의존성을 주입

불변성 보장과 필수 의존성 명시 가능

 

2. 세터 주입

선택적 의존성을 주입할 때 사용

런타임에 의존성 변경 가능

 

3. 필드 주입

가장 간단한 방식이지만 권장되지 않음

테스트와 유지보수가 어려움

 

의존성 주입의 장점

코드의 재사용성 향상

테스트 용이성 증가

객체 간의 결합도 감소

유지보수성 향상

코드 가독성 개선

 

 

의존성 주입의 단점

의존성 주입을 위한 선행 작업 필요

코드의 추적이 어려울 수 있음

복잡성 증가할 수 있음

'TIL' 카테고리의 다른 글

뉴스피드 프로젝트 후기  (0) 2025.02.20
일정 관리 앱을 만들며 어려웠던 부분  (0) 2025.02.13
SOLID 원칙  (1) 2025.02.05
오늘 한 것과 알고리즘  (2) 2025.02.04
자연수 뒤집어 배열로 만들기  (1) 2025.01.24