반응형

1. 객체지향 디자인 원칙에서 객체간의 결합도는 강할수록 좋다. (X)

  • 객체간의 결합도는 약할수록 좋다. DI는 객체간의 결합도를 약하게 만들어준다.

2. DI는 서버쪽 기술에서만 사용된다(X)

  • 클라이언트 기술인 Angular에서 DI기술이 사용된다.

 

Dependency Injection

DI의 개념

각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것을 말함
  • 개발자는 단지 빈 설정파일에서 의존관계가 필요하다는 정보를 추가하면됨.
  • 객체 레퍼런스를 컨테이너로부터 주입 받아서, 실행 시에 동적으로 의존관계가 생성됨
  • 컨테이너가 흐름의 주체가 되어 애플리케이션 코드에 의존관계를 주입해주는 것

DI (Dependency Injection)

  • 코드가 단순해진다.
  • 컴포넌트 간의 결합도가 제거된다. (디자인 패턴적 관점)
new를 일일이 하는 것이 아니라 자동으로 생성해주는 것. 

Setter Injection을 가장 많이 쓴다.

 

Spring DI 컨테이너의 개념

Spring DI 컨테이너가 관리하는 객체를 빈(Bean)이라고 하고, 이 빈(Bean)들을 관리하는 의미로 컨테이너를 빈 팩토리(Bean Factory) 라고 부른다.

 

  • 객체의 생성과 객체 사이의 런타임(Run-time) 관계를 DI 관점에서 볼 때는 컨테이너를 Bean Factory라고 한다.
  • Bean Factory에 여러 가지 컨테이너 기능을 추가하여 애플리케이션 컨텍스트(Appplication Context)라고 부른다.

 

Bean Factory와 Applicatiopn Context

Bean Factory 

  • Bean을 등록, 생성, 조회, 반환 관리함
  • 보통은 Bean Factory를 바로 사용하지 않고, 이를 확장한 Application Context를 사용함
  • GetBean() 메서드가 정리되어 있음.
    • Lookup을 지원하는 

Applicatiopn Context

최근엔 사용을 덜 함 -> 개발이 쉬워짐

  • Bean을 등록, 생성 조회 반환 하는 기능은 Bean Factory와 같음
  • Spring의 각종 부가 서비스를 추가 제공함
  • Spring이 제공하는 Apllicaiton Context 구현 클래스가 여러 가지 종류가 있음

 

 

 

 

반응형

+ Recent posts