Programming

스프링 IoC, DI에 DIP가 적용되어 있다구요?

송코딩 songcoding 2025. 1. 17. 07:59

안녕하세요 여러분,

김송아입니다.

 

 

혹시 여러분 지난 번 추천 아티클은 다들 한번 읽어보셨을까요?

 

스프링과 SOLID 원칙은 어떤 관계가 있을까?

안녕하세요 여러분!송아지할 때 송아 김송아입니다.새해가 넘으면서, 일상을 어떻게 보내야할 지 많이 생각해보고 있어요일상이란, 매일 반복되는 것 이라고 하는데어떤 것을 반복하며 지내야

songacoding.tistory.com

 

읽을 시간이 없었다구요? 괜찮습니다 😉

간혹 중력이 너무 심해서(?) 아무것도 하고 싶지 않을 때도 있으니까요 (사실 매일인 건 안 비밀)

 

ㅋㅋㅋㅋㅋㅋ중력ㅋㅋㅋ @자까

 

 

이번 시간에 천천히 다시 한번 뜯어보며, 스프링이랑 엮어보자구요🔥

그럼, 시작합니다!

 


 

 

스프링이라는 프레임워크는 SOLID 원칙과 관련이 있다고 했었죠.

사실 프레임워크라는 개념 자체를 저는 다음과 같이 생각합니다.

 

개발자 대신 어떠한 책임을 져주는 것

 

 

스프링에 집중하여 생각해볼게요.

스프링은 개발자 대신 어떠한 책임을 져주고 있나요?🤔 

 

 

사실 스프링 하면 생각나는 주요 특징들 중 오늘 저는, 

🔄 객체 라이프사이클 관리 에 대해 좀 더 집중해보고 싶어요.

 

자바로 웹 서비스를 제작하는 데 필요한 하나의 틀을 제공하는 스프링이니까!

객체에 대한 제어권을 가지고 그 라이프사이클을 개발자 대신 관리해주는 것만큼 중요한 임무가 더 있을까요?

 

그렇다보니..

'스프링이 SOLID 원칙과 밀접한 것은 당연하지 않을까🤔' 하는 생각도 들더라구요.

 

 

특히 그 중에서도 가장 중요한 DIP 원칙과 스프링을 엮어서 생각해볼게요.

 

 

👀 DIP 원칙이란?

 

A 객체가 B 객체를 참조해야하는 상황이 생긴다면 그 B 객체를 직접 참조하는 것이 아니라

B 객체의 상위 클래스 (또는 추상 클래스 또는 인터페이스) 를 참조하라는 것입니다.

 

 이유가 뭐냐구요?

B 객체 즉, 상위 클래스가 있음에도 하위 클래스를 사용하게 되면

하위 클래스에 변화가 있을 때 마다

✔️ 하위 클래스을 사용하는 A 객체는 물론이고

✔️ 잘못도 없는 상위 클래스까지 수정을 해야할 수 있기 때문입니다.

 

즉, 객체들의 의존성이 끈끈한 덕분에(?)

하나의 클래스에 수정이 일어나는 데, 다른 클래스들에도 수정이 일파만파 가해져야 한다는 것이죠

이 무슨 객체 지향 적이지 못한 일이랍니까..! 🫢

 

 

 

그래서..
스프링은 DIP 원칙을 지켜서 IoC와 DI를 수행하고 있다는 겁니다!

 

 

 

스프링이 DIP를 지켜서 어떻게 IoC와 DI를 수행하고 있는지 궁금하지 않으신가요?

사실 IoC와 DI는 우리 아주 완벽히 이해하고 있으니, DIP와의 연관관계만 고민해보시면 되겠네요!

(이 어려운 개념을 5분 컷으로 겁나 쉽게 설명한 유데미 강의 있는 거 다 아시죠..? 👉🏻 지금 구경 가기)

 

 

📹 오늘의 컨텐츠 추천입니다.

 

스프링의 IoC, DI 개념과 DIP와 엮어서 설명해주신 영상이에요.

(우아한 형제들의 10분 테크톡 영상입니다)

 

 

사실.. 영상을 먼저 보시는 것보다 10분만 시간내어 혼자 먼저 생각을 뱉어보시는 걸 추천해요.

그냥 메모장도 좋고, 블로그 비밀글도 좋으니 DIP와 IoC/DI가 어떤 연관관계가 있는지 줄글로 줄줄 적어보시죠!

 

 

영상을 보고나서도 조금 헷갈리는 부분이 있다면, 스스로 적어보실 때 정리가 확실히 잘 되실 겁니다.

그래도 정리가 잘 되지 않는다?

 

댓글 대.환.영 인거 아시죠? 🔥

 

 

 

너무 귀여운 두 분과 다시 한번 스프링을 생각해볼 수 있는 계기가 되셨길 바라며,

 

이번 한 주도 너무너무 고생 많으셨습니다.

 

독감 때문에 고생하시는 분들이 많던데ㅠ_ㅠ 아프지마 도토잠보❤️ (언제적 드립이여.. 김송아의 시계는 거꾸로 간다)

감사합니다.