DI와 IoC는 객체 지향 프로그래밍에서 중요한 개념이다.
이 두 개념을 적용하면, 예를 들어 Spring에서 제어의 흐름이 Repository -> Service -> Controller로 역전될 수 있게 하며, 대규모 애플리케이션에서 모듈 간의 결합도를 줄이고 코드의 유연성과 재사용성을 향상시킬 수 있다.
MVC (Model-View-Controller) 모델은 소프트웨어 설계에서 널리 사용되는 아키텍처 패턴이다. 이 패턴은 애플리케이션을 세 가지 주요 구성 요소로 분리하여 각각의 역할을 명확하게 하고, 서로 간의 의존성을 최소화하는 것을 목표로 한다.
모델(Model): 데이터와 비즈니스 로직을 처리하는 부분으로, 애플리케이션의 핵심적인 동작 및 상태를 담당한다. 예를 들어, 데이터베이스의 CRUD 연산을 수행하거나 복잡한 계산을 처리한다.
뷰(View): 사용자에게 보여지는 인터페이스를 담당한다. 즉, 사용자가 볼 수 있는 화면의 구성과 표현을 담당하며, 사용자와의 직접적인 상호작용을 담당하지는 않는다.
컨트롤러(Controller): 사용자의 입력을 받아 처리하며, 모델과 뷰 사이의 조정자 또는 중재자 역할을 한다. 사용자의 요청에 따라 모델을 업데이트하거나, 적절한 뷰를 사용자에게 표시한다.
이렇게 MVC 패턴을 적용하면, 각 구성 요소가 독립적으로 개발 및 테스트될 수 있으므로 유지보수와 확장이 용이하다. 또한, 모델, 뷰, 컨트롤러 간의 명확한 역할 분담으로 코드의 가독성과 재사용성이 높아진다.