-
(2023-11-08 TIL) IoC와 DI에 대하여프로그래밍 언어/Spring 2023. 11. 8. 17:23
건설업계에서는 튼튼한 건물을 짓기 위해 굉장히 엄격한 설계원칙과 디자인 패턴을 고수한다고 한다.
이는 한 사람의 단시간에 생각해 낸것이 아니라 여러 사람의 노하우와 기술이 합쳐져서 나온 최적의 건설 이론이라고 볼 수 있다.
코딩에서도 마찬가지로 튼튼하고 유지보수가 좋은 코드를 만들기 위해서 지켜야할 몇가지 설계원칙과 디자인 패턴이 있다. 오늘의 TIL 주제인 IoC(Inversion of Control)와 DI(Dependency Injection)이다.
IoC(제어의 역전)이란?
애플리케이션의 흐름 조정(management of an application's flow)이 애플리케이션의 다른 부분으로 이전되는 경우, 연결성(pluggability), 테스트 가능성(testability), 유용성(usability) 및 약한 결합 측면에서 이점이 있다고 주장하는 소프트웨어 디자인 패턴이다.
(영문을 번역한 거라 굉장히 어색하지만 이해 부탁한다)이해하기 굉장히 어려운 단어지만 IoC에 대한 간단한 예를 살펴보자.
1. 나는 피자재료를 이용해 피자를 만들어 먹었다. ( IoC ) 나는 요리사가 피자재료를 이용해 만들어준 피자를 먹었다.
2. 나는 내 차를 운전한다. ( IoC ) 나는 운전기사를 고용해 내 차를 운전하게 한다.
3. 할리우드에는 이런 말이 있다. "전화하지 마세요. 우리가 당신에게 전화할 겁니다."
IoC(제어의 역전 의 목적
IoC의 목적은 약하게 결합된 클래스를 설계해 테스트 및 유지 보수에 편리함을 가져가기 위함이다.
DI(의존성 주입)이란?
먼저, Dependency에 대한 개념을 명확히 집고 넘어가자.
Dependency란,
대상 A에 의존하는 대상 B가 변하면, A도 영향을 받는다
라고 이해할 수 있다.
그렇다면 DI란, 위의 의존관계를 외부에서 결정하고 주입하는 것이다.
DI를 구현하는 방법에 대해 살펴보자.
1. 생성자를 이용
2. 메소드를 이용
3. 필드를 이용
'프로그래밍 언어 > Spring' 카테고리의 다른 글
API 게이트 웨이에 대해 파헤치기 (0) 2024.08.06 정규 표현식 정리 (0) 2023.11.29 1대N, N대1, N대M 관계에 대해 알아보자 (1) 2023.11.20 Spring MVC 간단 정리 (1) 2023.11.20 (2023-11-07자 TIL) 3계층 아키텍쳐에 대해 알아보자 (0) 2023.11.07