본문 바로가기

공부 기록/영상 후기

[10분 테코톡] 오찌, 야호의 DI와 IoC

https://youtu.be/8lp_nHicYd4

IoC : 제어의 역전

- 직접 객체를 생성하여 코드를 "제어"(관리)

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

- 역할과 관심을 분리해 응집도를 높이고 결합도를 낮추며, 이에 따라 변경에 유연한 코드를 작성할 수 있는 구조가 될 수 있다.

- 할리우드 법칙(Hollywood Principle) => "Don't call us, we'll call you."

  

DIP(Dependency Inversion Principle) : 의존 역전 원칙

- 상위 레벨의 모듈은 절대 하위 레벨의 모듈에 의존하지 않는다.

- 둘 다 추상화에 의존해야 한다.

  

IoC & DIP => 클래스 간 결합을 느슨히 하기 위함 => 애플리케이션을 지속 가능하고 확장성 있게 만든다.

  

IoC를 구현하는 방법 : Service Locator / Factory / Abstract Factory / Template Method / Strategy / Dependency Injection

  

DI(Dependency Injection) : 의존성 주입

- 클래스 간에 의존 관계가 있다는 것 => 한 클래스가 바뀔 때 다른 클래스가 영향을 받음

- 생성자 주입, Setter 주입, Interface 주입

- 의존성 분리 : DIP를 이용해 의존 관계를 분리시킨다.

  

Spring DI : 자동 주입

- 스프링 빈으로 등록되면 스프링이 자동으로 생성해주며, 이 때 필요한 의존성도 주입해준다.

- @Autowired => 생성자 주입, 필드 주입, Setter 주입

- @Qualifier

- @Primary

  

IoC는 원칙, DI는 IoC를 달성하는 디자인 패턴