Study/Spring boot

[Spring boot] 의존성 주입(DI) 복습

Anna-Jin 2022. 2. 23. 15:14
반응형

2021.12.24 - [개발자가 될 때까지/Spring boot] - [Spring] 스프링과 스프링부트 , 빈(Bean)

 

[Spring] 스프링과 스프링부트 , 빈(Bean)

https://velog.io/@sorzzzzy/series/Spring-Boot-RoadMap-1 시리즈 | Spring Boot - RoadMap 1 - sorzzzzy.log 🏷 검증 요구사항 상품 관리 시스템에 새로운 요구사항이 추가되었다 ✔️ 요구사항: 검증 로직 추가..

annajin.tistory.com

 

위 게시글을 작성하고 나서 시간 조금 지나고 나니 당시에는 그렇구나 하고 넘어갔던 부분에 대한 개념정리가 많이 부족해 그래서 이걸 왜 하더라? 라는 물음이 생겨 다시 정리해보기로 했다.

 

 


 

 

https://steady-hello.tistory.com/120

 

[Spring] 스프링의 DI를 알아보자 (Dependency Injection)

DI에 대해 간략하게 정리해 보겠습니다. 우선 DI는 Dependency Injection의 앞글자를 딴 말로, 의존 주입이라고 해석할 수 있습니다. 들어가기에 앞서 DI는 스프링의 핵심 개념 중 하나이지만 스프링에

steady-hello.tistory.com

 

 

물음 1) 그래서 의존성 주입에서 의존이 뭔데?

사전적 의미의 의존은 다른 무언가한테 의지한다 라고 알고 있는데 여기서 코드끼리 의존한다고 하니 제대로 이해가 되지 않았다.

 

위의 글의 설명을 토대로 정리하자면

 

Service에서 어떤 로직을 수행하려면 (insert나 select나 등등) Model 객체 사용하는게 되는데, 다시 말하면 Service는 Model을 반드시 필요로 한다는 뜻이다.

 

나 너가 필요해!! 너한테 의지해서 이거 할래!!

 

이렇게 설명할 수 있지 않을까 싶다.

 

 

물음 2) 의존성 주입을 왜 해야하는데?

https://yaboong.github.io/spring/2019/08/29/why-field-injection-is-bad/

 

스프링 - 생성자 주입을 사용해야 하는 이유, 필드인젝션이 좋지 않은 이유

개요 Dependency Injection (의존관계 주입) 이란 Setter Based Injection (수정자를 통한 주입) Constructor based Injection (생성자를 통한 주입) 스프링에서 사용할 수 있는 DI 방법 세가지 생성자 주입을 이용한 순

yaboong.github.io

의존성 주입(DI)에 대한 이해가 부족한 상태에서 생기는 물음이었다. DI는 스프링뿐만 아니라 객체지향프로그래밍에서 통용되는 개념이라고 한다.

 

강한 결합

객체 내부에서 다른 객체를 생성하는 것은 강한 결합도를 가지는 구조이다. A 클래스 내부에서 B 라는 객체를 직접 생성하고 있다면, B 객체를 C 객체로 바꾸고 싶은 경우에 A 클래스도 수정해야 하는 방식이기 때문에 강한 결합이다.

 

느슨한 결합

객체를 주입 받는다는 것(의존성 주입)은 외부에서 생성된 객체를 인터페이스를 통해서 넘겨받는 것이다. 이렇게 하면 결합도를 낮출 수 있고, 런타임시에 의존관계가 결정되기 때문에 유연한 구조를 가진다.

 

 

 

의존성 주입 추가 참고

https://linkeverything.github.io/springboot/dependency-injection/

 

Spring (Boot)에서의 의존성 주입(Dependency Injection)에 대한 이야기

스프링에 대해서 이야기를 하다보면 의존성 주입(Dependency Injection, DI)에 대해 이야기를 할 수밖에 없습니다. 스프링의 특성 중 하나가 Singleton pattern을 가지고 있다는 점인데, 일반적인 Java 프로그

linkeverything.github.io

 

반응형