웹(Web)/백엔드(Backend)

의존성주입(DI, Dependency Injection)이란

SK_MOUSE 2021. 4. 4. 16:53
반응형

객체 A:갑, 객체B,C:을

1. 객체 A는 B,C의 기능을 사용한다고 볼수있지만, 객체 B,C의 기능에 의존한다.

 

 

A가 을인경우

2. A가 B,C의 기능이 필요한경우 외부에 있는 갑한테 B,C의 기능을 주입받는다.

 

 

위처럼 외부에서 주입시켜주는것 : IoC컨테이너 라고한다.

이렇게 외부에서 의존성을 주입시켜주고 관리하는것이 JAVA에서는 "Spring" 이다.

 

위의 1,2번 케이스를 개발자가 직접 해당 객체의 라이프사이클들을 다 관리하면(강한결합) 힘들다.

따라서 외부에서 객체B,C와 같이 만들어서 주입만시켜주는 경우(약한결합) 개발자가 편해진다.

 

객체지향 프로그래밍에서는 위처럼 "약한결합"을 사용하기 위해 Spring을 이용한다.

 

 

아래는 예시코드이다.

강한결합과 약한결합

위처럼 객체를 직접 만들면 강한결합,

가져오면 약한결합이다.

이런식으로 강한결합은 직접만들고, 약한결합은 가져오는것이다.

 

 

Why 약한결합사용?

강한결합에서 문제발생

class에서 생성자를 private으로 바꾸면 강한결합에서는 인식할수없다.

하지만 약한결합은 만들어진 것을 주입받는것이라서 문제가 발생하지 않는다.

 

 

 


주입 방식은 2가지

의존성 주입방법

Dependency Injection(의존성 주입 : 조립해주는 역할)

1. setter를 통해서 부품을 조립해주는 방법

2. 생성자를 통해서 조립하는 방법

 

이렇게 하면 스프링에서 조립해준다: IoC컨테이너

 

반응형