상세 컨텐츠

본문 제목

의존성 주입, 제어 역전, 관점 지향

Spring(프레임워크)

by 헬로제이콥 2025. 1. 16. 15:24

본문

의존성 주입은 프레임워크에서 함수아 주는 것과 비슷한듯
제어역전은 프로그램 실행순서 프레임워크에서 알아서 해줌

 

의존성 주입

"레고 블록을 조립하는 것처럼"

  • 레고 블록: 함수나 클래스처럼 프로그램을 구성하는 기본 요소
  • 조립: 의존성 주입을 통해 다른 블록과 연결하는 것
  • 장점:
    • 재사용성: 한 번 만든 블록을 여러 곳에서 사용 가능
    • 유연성: 블록을 교체하면서 다양한 기능 구현
    • 테스트 용이성: 각 블록을 개별적으로 테스트 가능

함수를 주는 것과 비슷하다는 비유는 정확하지만, 의존성 주입은 단순히 함수뿐만 아니라 객체 전체를 주입할 수 있다는 점을 기억해야 합니다.

제어 역전

"기차 여행을 하는 것처럼"

  • 기차: 전체 프로그램
  • 기차역: 프로그램의 실행 순서를 정하는 곳
  • 승객: 각 기능을 담당하는 부분
  • 장점:
    • 복잡성 감소: 개발자는 각 기능에 집중
    • 유지보수성 향상: 전체 시스템의 흐름을 한눈에 파악

프로그램 실행 순서를 프레임워크에서 알아서 해준다는 비유는 매우 적절합니다. 마치 기차역에서 기차의 운행 순서를 정해주는 것처럼, 프레임워크가 프로그램의 전체적인 흐름을 관리하는 것이죠.

관점 지향 프로그래밍

"양파 껍질 벗기기처럼"

  • 양파: 프로그램
  • 껍질: 부가 기능 (예: 로그, 보안, 트랜잭션)
  • 속살: 핵심 기능
  • 장점:
    • 모듈화: 부가 기능을 핵심 기능과 분리
    • 재사용성: 부가 기능을 여러 곳에 적용
    • 유지보수성 향상: 각 기능을 독립적으로 관리

핵심 기능은 아닌지만 부차기능을 제공한다는 비유도 좋습니다. 관점 지향 프로그래밍은 마치 양파 껍질처럼 핵심 기능을 감싸는 다양한 부가 기능들을 쉽게 추가하고 관리할 수 있도록 해줍니다.

다시 한번 정리하면:

  • 의존성 주입: 객체 간의 관계를 설정하여 코드의 재사용성과 유연성을 높이는 방법
  • 제어 역전: 프로그램의 제어 흐름을 프레임워크에 넘겨 개발자의 부담을 줄이는 방법
  • 관점 지향 프로그래밍: 핵심 기능과 부가 기능을 분리하여 관리하는 방법

추가 설명

이 세 가지 개념은 서로 밀접하게 관련되어 있습니다.

  • 제어 역전은 프레임워크가 전체적인 제어를 담당하고, 의존성 주입은 이러한 제어 하에서 객체 간의 연결을 설정하는 방식입니다.
  • 관점 지향 프로그래밍제어 역전의존성 주입을 기반으로 하여 부가 기능을 모듈화하고 재사용성을 높이는 데 활용됩니다.

예시:

스프링 프레임워크를 예로 들면, 스프링 컨테이너가 제어 역전을 통해 객체를 생성하고 관리하며, 의존성 주입을 통해 객체 간의 관계를 설정합니다. 또한, AOP를 통해 로그, 보안 등의 관점 지향 기능을 구현할 수 있습니다.

관련글 더보기