본문 바로가기
TIL/기술면접 대비

DI, IoC

by J1-H00N 2023. 8. 28.

DI = 의존성 관계 주입

객체를 직접 생성해 의존관계를 만드는 것이 아니라 외부에서 객체를 생성한 뒤 setter나 생성자를 통해 외존관계를 주입하는 방식이다.

이렇게 함으로서 유연성은 높이고, 결합도를 낮출 수 있다.

스프링에서는 객체를 Bean이라고 부르며 프로젝트가 실행될 때 사용자가 Bean으로 관리하는 객체들의 생성과 소멸에 관련된 작업을 자동적으로 수행해주는데 객체가 생성되는 곳을 스프링에서는 Bean 컨테이너라고 부른다.

 

IoC = 제어의 역전

메소드나 객체의 호출방법을 개발자가 아니라 외부에서 결정하는 것

의존성을 역전시켜 DI와 마찬가지로 유연성을 높이며 결합도를 낮추며, 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 해준다.

객체의 생성과 실행 순서를 객체 생성 - 의존성 객체 생성 - 의존성 객체 메서드 호출 에서 

객체 생성 - 의존성 객체 제어권을 스프링에 위임하여 스프링이 만든 객체를 주입 - 의존성 객체 메서드 호출과 같이 한다.

스프링이 객체들을 실행 될 때 미리 만들어두고 필요할 때만 주입하여 Bean들이 싱글턴 패턴의 특징을 가지게 된다.

 

정리

DI는 의존성 관계 주입을 의미하고, 의존관계를 외부에서 생성한 객체를 setter나 생성자를 통해 주입받는 방식이다.

IoC는 제어의 역전을 의미하고, 메서드나 객체의 호출방법을 개발자가 아닌 외부에서 결정하는 방식이다.

두 방식 모두 코드의 유연성을 높이고 결합도를 줄이는 효과를 주며, 가독성 및 코드 중복 개선, 유지 보수의 편의에서 큰 효과가 있다.

객체들은 스프링에서 Bean이라고 불리며 이 객체가 생성되는 곳을 Bean 컨테이너라고 부른다.

위에서 말한 Bean을 프로그램이 실행될 때 스프링이 Bean 컨테이너에 생성해두고, 필요할 때마다 주입해준다. 이러한 과정을 통해 Bean들은 싱글턴 패턴의 특징을 가지게 된다.

 

https://velog.io/@seongwon97/%EC%8B%B1%EA%B8%80%ED%86%A4Singleton-%ED%8C%A8%ED%84%B4%EC%9D%B4%EB%9E%80

 

'TIL > 기술면접 대비' 카테고리의 다른 글

http, https 차이점  (0) 2023.08.26
TCP/UDP  (0) 2023.08.25
쿠키, 세션의 개념과 차이  (0) 2023.08.24
브라우저의 작동방식  (0) 2023.08.23
CORS(Cross Origin Resource Sharing)  (0) 2023.08.22