Java

static 단점, 장점을 스프링에 엮어보자

송코딩 songcoding 2024. 12. 13. 08:00

안녕하세요 여러분,
송아지할때 송아 김송아입니다.
 
 
지난주 목,금에는 LG CNS❤️ 에 스프링 부트 실습 강의를 진행했어요 

CNS라 쓰고 춘이라 읽습니다 (출처: LG CNS)

 
 
몇회차인지 모를 정도로 많은 회차를 지났지만, 늘 갈 때마다 반갑게 맞아주시는 임직원분들 감사합니다!
덕분에 늘 설레고 신나는 출근길이에요 :)
 
 

사랑해요 엘지

 

제 마음 알죠? (출처: 사랑해요 엘지)

 
 
 
금요일에 강의를 마치면서, 멋진 질문을 받았습니다.
혹시 다음과 같은 경우는, 어떤 차이가 있냐는 논의를 같이 해주셨어요.
 

스프링이 객체 라이프사이클을 대신 관리해줘서 개발자가 편해지는 것
vs
개발자가 그냥 모든 객체를 static으로 선언하고 마음껏 사용하는 것

 
 
 
정말 신선하고 재밌는 논의였습니다.
사실 스프링이 객체를 관리해줌으로써 우리가 가질 수 있는 장점은
static으로 선언함으로써 스프링에 대해 신경 안 써도 되고 더 좋지 않을까 하는 생각이었죠.
 
 

집에 돌아와 고민에 빠졌습니다.

 
 
 
고민의 결과..
이 질문의 대답은 크게 두가지 측면으로 볼 수 있더라구요.
 

첫번째. static의 단점

두번째. 스프링 DI의 장점

 
 
가볍게 넘기기엔 알맹이가 중요한 것들 투성이인 주제라, 하나씩 좀 더 구체적으로 다뤄보면 좋을 것 같아요.
먼저 오늘은 static에 대한 단점으로 스프링을 바라봐볼까요?
 
 
 

첫번째. static의 단점 ✅

사실 질문을 받았을 때, 딱 드는 생각은 static의 단점이었습니다.
그래서 그 때 제가 드린 답변도, ‘static은 메모리의 비용이 문제가 될 수 있을 것이다.’ 였어요.
static은 GC가 관여 하지 않는다는 단점도 있을 뿐 더러, 모든 객체가 메모리를 공유한다는 것이 근거였습니다.
 
너무 티나게 ‘static은 원래 별로야!’ 하는 제 마음이 불쑥 나온 것이죠 😂

💡 GC : Garbage Collector
자바에서 객체의 소멸을 담당하는 멋진 친구

 
 
하지만 제가 늘 말씀 드리듯이, 진짜 별로일까? 다시 한번 ‘왜’를 생각하게 되었습니다.
 
 

🕵🏻‍♂️ static의 장점은 무엇일까?

뒤돌아보니, static은 다음과 같은 장점도 있는 친구더라구요.
1️⃣ 오히려 메모리 영역이 고정되니, 인스턴스 생성과 소멸을 반복하며 낭비되는 메모리를 아낄 수 있다는 것
2️⃣ 어플리케이션 시작과 동시에 클래스 형태로 메모리에 올라가기 때문에, 겁나 빠르겠죠.
 
 
 
그럼 대체 스프링 DI에 비해서 static이 모자란 점이 무엇일지, 다시 한번 생각을 해봐야하는 겁니다.
 
그래서 전 다시 static의 단점을 찾아 헤매었어요.
그리고 아주 제 취향인 단점을 찾았습니다.


static은 객체 지향적이지 않은 문법이라는 것에 집중해봤어요.


static은 앞서 말했듯이, 객체를 생성하지 않고 클래스로 사용할 수 있는 방법입니다.
그렇다보니 객체 지향의 세상에 자연스럽지 않은 방법으로 볼 수 있겠죠?
객체 지향 개발자라면 누구보다 객체, 객체, 객체!! 를 외쳐야 하는 우리이니까요.
 

그럼 객체가 아님으로써 놓치는 객체의 장점은 무엇이 있을지 생각해보았죠.

그랬더니 이게 무슨일이람.

객체가 아니라면,, 인터페이스를 사용하지 못한다는 거죠...! 😱


저는 객체 지향의 특징을 딱 하나 골라봐! 라고 물어보면, 다형성 이라고 뽑는 사람이잖아요?
그렇다는 건.. 자바인데 인터페이스를 사용하지 못한다..? 그럼 다형성이 없는 자바라는 겁니다. (충격)
 
이거 하나만으로도 static을 사용하면 아쉬운 이유가 확실하죠??!
아마 저랑 자바, 스프링을 공부하신 분들은 느낌이 더 오실 것 같아요.

어..? 자바에서는 분명
인터페이스가 짱이라 했는데..?

 

맞습니다. 특히나 스프링은 인터페이스랑도 아주 밀접한 관계가 있잖아요?! 🫢
 
 
다음 시간에는, 스프링의 관점에서 오늘 주제를 이어나가 보도록 하겠습니다!
그 전에 여러분이 먼저 고민해보고 오면 좋겠죠?
 
 
 
글 아직 안 끝났지롱
오늘 글엔 쿠키가 3개나 있답니다🫶🏻
내가 만든 쿠키~~ ... 언제적이니
 


🍪 쿠키1
혹시 저와 스프링 입문을 해보고 싶다면, 옆집 아니고 아래 링크에서 기다릴게요!
 

진짜. 그 누구보다 쉽게 알려드릴 자신 있습니다.
국내 최초 스프링 입문자용 강의거든요🔥

 
 

👇🏻👇🏻 클릭이 될까?👇🏻👇🏻

🔺유데미로 이동합니다🔺


 
 
🍪 쿠키2
 
아참, 저.. 유튜브 시작했습니다 여러분..💕

개발자 취업 꿀팁을 매일매일 쇼츠로 만날 수 있으니, 
얼른 구독하고 취뽀 하자구요!!!


👇🏻👇🏻 클릭이 될까? 222 👇🏻👇🏻

 
 
참고로.. 우선 지난 웨비나와 무물보 질문으로 쇼츠를 제작하고 있습니다.
궁금한 게 있다면 언제든 대환영이니 댓글로 남겨주세요! 그럼 영상으로 답변드릴게요😘
 
 
 
🍪 쿠키3
 
지난 수요일 (12.11)에 유데미에서 주최해주신 강사의 날 행사에 참석했었어요!

반년만에 뵙는 (제 연예인) 조코딩님, (제 영원한 안드로이드 선생님) 홍드로이드님, 코드 깎는 노인님, 한입 크기 리액트 정환님!!
모두 오랜만에 너무 반가웠습니다!!

다들 진짜 멋지게 미래를 계획하시는 모습.. 늘 배웁니다! 얼른 성장해볼게요 저도🔥
멋진 자리 마련해주신 유데미 감사합니다💜
 
 
 
소소한 제 쿠키까지 읽어주신 여러분에겐 더욱 큰 감사를 드리며,
오늘도 멀리서나마 큰 응원을 전해봅니다.
 
감사합니다.
김송아 드림