[Spring 3대 요소] 1 .IoC와 DI

namkun·2023년 6월 1일
0

T-I-L

목록 보기
10/20

1. 제어의 역전 (Inversion of Control)

  • 객체 내부에서 직접 필요한 클래스의 객체를 생성하지 않고 다른 객체에 위임함으로써 객체에 대한 제어권, 즉 프로그램의 흐름을 제 3자에게 넘기는 것을 IoC 모델이라고 한다.
  • 이러한 모델을 통해서 객체 지향 프로그램에서는 객체를 캡슐화하고, 높은 응집도와 낮은 결합도를 갖춰 변경에 유연하도록 설계하는 것을 지향한다.
  • Spring Framework에서는 IoC Container를 통해서 인스턴스의 생성을 일시적으로 진행하고, 인스턴스의 라이프 사이클까지 위임한다.

IoC Container

  • 객체의 생성을 책임지고, 의존성을 관리하는 컨테이너
  • Application Context or Bean Factory 를 사용한다.
    • Bean Factory
      • 실질적 IoC Container
      • Bean 등록, 생성, 조회, 반환을 관리
      • getBean() 메서드로 bean을 조회한다.
    • Application Context
      • Application Context는 BeanFactory를 상속받은 Sub-Interface이다.
      • Bean Factory와 동일하게 Bean의 등록, 생성, 조회, 반환을 관리한다.
      • Spring의 각종 부가서비스를 제공한다.

2. 의존성 주입 (Dependency Injection)

  • 프로그래밍에서 의존성이란 두 모듈간의 연결을 말하고, 객체지향 언어에서는 두 클래스간의 관계라고 말하기도 한다.
  • 의존관계는 항상 방향성이 있어서 두 객체간 의존관계를 표현할 때 A -> B 처럼 화살표로 표현한다.
  • 객체의 제어권을 이전함으로써 결합도를 낮추는 것이 위에서 말한 제어의 역전이다.
  • 의존성 주입이란 Spring Framework에서 제공하는 IoC 방식을 좀 더 명확하게 설명하기 위한 용어이다.
  • 의존성 주입 방법에는 3가지가 있다.
    • Field Injection
      • 단일 책임 원칙 위반
      • 테스트가 어렵다.
      • 불변성을 보장하지 못한다.
    • Setter Injection
      • spring에서 권장하는 의존성 주입 방식
    • Constructor Injection
      • 불변성을 보장하지 못한다.
profile
개발하는 중국학과 사람

0개의 댓글