DI(Dependency Injection)? 해당 기술의 장점.
💡 DI란? 객체간 의존성을 명시적으로 정의하고, 객체간의 결합도를 줄이기 위한 디자인 패턴
- 객체를 생성하고 관리하는 코드에서 객체 간 의존성을 외부에서 주입하는 방식으로 작성할 수 있다.
- 내부 생성을 하는 것은 무엇? → 개발자? ㄴㄴ 스프링(IOC : 제어의 역전)
→코드의 재사용성과 유지보수성이 높아지며, 객체 간 의존성이 줄어들어 유연성과 확장성이 높아진다.
방법 3개!
- 생성자를 통한 의존성 주입(권장)
- 프로퍼티를 통한 의존성 주입
- 인테페이스를 통한 의존성 주입(추상화 개념 → 완벽하게 분리되서 결합도를 낮출 수 있다.)
장점
- 유연한 코드 작성 가능
- DI를 이용하면 객체 간의 결합도를 낮출 수 있으므로 코드의 유연성과 재사용성이 높아집니다.
- 테스트 용이성
- DI를 이용하면 객체를 대체하는 것이 용이해지므로, 유닛 테스트 등에서 객체를 쉽게 대체할 수 있습니다.
- 의존성의 명시화
- DI를 이용하면 의존성을 명시적으로 선언하므로, 코드를 이해하기 쉬워집니다.
- 코드 재사용성
- DI를 이용하면 재사용 가능한 코드를 작성할 수 있습니다.
- 유지보수성
- DI를 이용하면 코드의 복잡성을 낮추어 유지보수성을 높일 수 있습니다.
스프링과 같은 프레임워크에서 널리 사용
- 스프링 프레임워크에서는 객체 생성과 관리를 스프링이 담당하며(bean, 라이브러리 등), 객체 간 의존성도 스프링이 주입한다(→ bean 은 ioc 컨테이너에 있음) → 개발자는 비즈니스 로직에만 집중할 수 있다, 객체 간 결합도를 낮출 수 있다.