Today I Learned_220425

1 분 소요

Spring Framework

인프런 스프링 강의 수강

IntelliJ

command + option + M : 함수 추출

패키지에서 오른쪽 클릭 -> diagram : 객체들간의 관계를 볼 수있다.

사슬 모양 클릭하면 dependency도 볼 수 있음

dependency

IoC(Inversion of Control)

제어의 역전

기존 프로그램 : 클라이언트 구현 객체/프로그래머가 스스로 필요한 서버 구현 객체를 생성-연결-실행함

제어의 역전 : 프로그램의 제어 흐픔을 직접 제어하는 것이 아니라 외부에서 관리하는 것

내가 호출하는 것이 아니라 프레임워크가 호출한다(제어권이 뒤바뀐다)

IoC는 스프링에만 국한된 것이 아니라, 제어권이 역전된 것을 총칭한다(예시 : JUnit도 실행 연결은 JUnit이 담당함)

프레임워크 vs 라이브러리

프레임워크 : 코드를 제어하고 대신 실행

라이브러리 : 코드가 직접 제어의 흐름을 담당

Dependency Injection(의존관계 주입)

프로그래머는 추상화에 의존해야지, 구체화에 의존하면 안 된다 -> 의존성 주입은 이 원칙을 따르는 방법이다.

의존관계는 정적인 클래스 의존 관계와 동적인 의존 관계를 분리해서 생각해야 한다.

  • 정적인 클래스 의존 관계 : 애플리케이션을 실행하지 않아도 분석이 가능한 클래스 의존 관계
  • 동적인 인스턴스 의존 관계 : 애플리케이션 실행 시점에 실제 생성된 객체 인스턴스의 참조가 연결된 의존 관계

의존관계 주입 : 애플리케이션 런타임에 외부에서 클라이언트와 서버간의 의존관계를 설정하는 것

의존관계 주입을 사용하면…

  • 클라이언트 코드(애플리케이션 코드)를 변경하지 않고 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 있다.
  • 정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스 의존관계를 쉽게 변경 가능하다.

DI(IoC) 컨테이너

객체를 생성하고 관리하면서 의존관계를 연결해 주는 것.

IoC/DI를 해 주는 컨테이너

스프링 뿐만 아니라 여러 오픈소스 DI 컨테이너들이 존재

요새는 IoC 컨테이너보다 DI 컨테이너라는 용어를 더 많이 사용함

카테고리:

업데이트: