less than 1 minute read

Object Dependencies(객체 의존성)

현재 객체가 다른 객체와 상호작용(참조)하고 있다면 현재 객체는 다른 객체에 의존성을 가진다.

public class PetOwner{
    private AnimalType animal;

    public PetOwner() {
        this.animal = new Dog();
    }
}
https://gmlwjd9405.github.io/2018/11/09/dependency-injection.html
  • 이 접근법의 문제점

두 객체간의 긴밀한 결합이 생기고 따라서 한 객체를 변경하면 다른 객체로 변경된다.

즉, 하나의 모듈이 바뀌면 의존한 다른 모듈까지 변경되어야 한다.

Dependency Injection(의존성 주입)

객체가 아니라 프레임워크에 의해 객체의 의존성을 주입하게 되는 패턴

  • 프레임워크간에 동적으로 주입되므로 여러 객체간의 결합이 줄어든다.
  • DI는 스프링에서 지원하는 IoC의 형태

Bean Container 가 Bean 객체를 생성하고 종속성 주입을 수행한다.

DI 와 IoC 는 같은 의미로 사용된다.

IoC는 DI를 통해 달성된다.

IoC(제어의 역전) : 프로그램의 제어권을 프레임워크가 가져가는것

개발자가 모든 제어의 중심이지만 코드 전체에 대한 제어는 프레임워크가 대신 처리해준다 개발자가 설정을 하면 Container 가 처리해주는 개념

의존성 주입 방법

  1. Contructor Injection

    생성자를 통한 전달

  2. Method(Setter) Injection

    setter()를 통한 전달

  3. Field Injection

    멤버 변수를 통한 전달

장점

  1. 종속성 감소

  2. 재사용성 증가

  3. 더 많은 테스트 코드 작성 가능

  4. 코드를 읽기 쉬워짐

Spring Container

스프링의 핵심 컴포넌트

Container 은 DI 를 사용하여 응용 프로그램을 구성하는 Bean 객체를 관리한다.

역할

bean 을 포함하고 관리하는 책임이 있음.

  1. 객체를 생성하고
  2. 객체를 묶고
  3. 객체를 구성하고
  4. 객체의 라이프 사이클을 관리

설정 방법

  1. XML
  2. Annotations
  3. Code

출처 : https://gmlwjd9405.github.io/2018/11/09/dependency-injection.html

Categories:

Updated: