영상 후기 - 오찌, 야호의 DI와 IoC

parkkhee·2023년 3월 19일
0

  • IoC란 Iversion of Control 제어의 역전
  • 직접 객체를 생성하여 코드를 "제어"(관리)
  • A에서 B를 받아서 정의 하고 있다. == 제어의 역전 (외부에서 관리하는 것.)
  • IoC는 왜 필요할까?
  • 역할과 책임을 분리해 응집도를 높이고 결합도를 낮추며, 결과적 객체지향 원칙을 잘 지키는 코드 작성 가능!
  • 호출 당하기를 기다리는 모습.
  • DIP Dependency Inversion Principle 의존 역전 원칙
  • 상위 레벨의 모듈은 절대 하위 레벨 모듈에 의존하지 않는다. 둘 다 추상화에 의존해야 한다.
  • DI Dependency Injection 의존성 주입
  • 의존성을 외부에서 주입해주는 것. (대표적 3가지 생성자 주입, Setter 주입, Interface 주입)
  • IoC는 원칙중 하나이고, DI는 IoC원칙을 나타내는 디자인 패턴중 하나이다.
  • 스프리에서 컨트롤러는 따로 생성자를 만들지 않지! 스프링이 자동으로 생성해준다.
  • 스프링 빈으로 등록되면 스프링이 자동으로 생성해준다. 이 때 필요한 의존성도 주입해준다.
  • 스프링 의존성 자동 주입 방법? @Autowired 어노테이션 == 필드주입
  • 필드주입 별로 추천 하지 않는다. 우리작 직접 의존성 못 넣는다.
  • DI에서의 setter 주입은 생성자메서드에 @Autowired 붙인다. 대신 final 로 선언할 수 없고, 의존성 불변을 보장할 수 없다.
  • DI에서의 생성자 주입 공식적으로 추천하는 방법. (final 붙여서 선언)
  • 생성자 주입 방식만 null이 안들어간다.
  • @Qualifier("이름") 이렇게 명시해서 주입시 구분 가능.
  • @Primary 우선적으로 주입. -> 기본값이야.
  • @Qualifier > @Primary
profile
순우리말 백엔드 개발자

0개의 댓글