티스토리 뷰
스프링/스프링부트를 사용하면서
왜 프레임워크를 쓰는거지?
장점 말고 단점도 있을까?
의문이 들어 정리하게 되었습니다🤔
📖 먼저 프레임워크에 대해 알아보기 전, 라이브러리란 무엇일까?
라이브러리란 자주 사용되는 로직을 재사용하기 편리하도록 잘 정리한 일련의 코드들의 집합을 의미합니다.
"도서관"이라는 의미처럼, 필요할 때마다 꺼내볼 수 있는 책들이 모여있는 곳이라고 이해할 수 있습니다!
🚀 그렇다면 프레임워크란?
한글로 번역하면 "뼈대", "기반 구조"를 뜻하며,
프로그램의 기초를 구축할 수 있는 코드의 집합이라고 생각할 수 있습니다.
👉쉽게 비유하면,
개발자가 되기 위해 혼자 계획을 세워서, 개발 공부를 해나가는 것보다,
전문 교육 기관(데브코스)의 도움을 받아 커리큘럼을 기반으로 개발 공부를 진행하면 더 쉽고 효율적으로 개발자가 될 수 있는 것처럼 말이죠👏
프레임워크는 Spring, Django, Flask, Android 등등 다양하며, 많이 사용되고 있습니다.
🤜 라이브러리 vs 프레임워크
둘의 가장 큰 차이는 "제어를 누가 하느냐"에 달려 있습니다.
라이브러리를 사용하는 애플리케이션 코드는 애플리케이션의 흐름을 직접 제어하지만,
프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용됩니다.
즉, 프레임워크가 흐름을 주도하면서 개발자가 만든 애플리케이션 코드를 사용하는 것입니다.
➡️이를 "제어의 역전" 이라고 부릅니다.
Spring Framework에서는 IoC Container를 제공하여
IoC Container에 클래스를 등록하면, 필요한 의존관계를 맺어주고 생명주기를 관리하면서 객체에 대한 인스턴스를 만들어 줍니다.
프레임워크의 장단점
장점
- 제어의 역전이 이루어져, 프레임워크 자체에서 bean과 생명주기 관리 등의 기능을 제공하기 때문에 시간과 비용이 절약되어 효율적으로 개발을 할 수 있습니다.
- 체계적인 코드 관리로 유지보수가 용이합니다.
단점
- 스프링 관련 강의 및 도서들이 계속해서 나오는 것처럼, 이를 습득하고 이해하는데 시간을 투자해야 합니다.
- 사용법이 정해져 있어, 유연하게 개발하는 데 있어서는 한계가 있을 수 있습니다.(저는 아직 큰 체감을 하지 못했습니다..)
정리하면
프레임워크는 전체 동작방식을 제공하고, 개발자는 이를 이용해 개발을 진행하게 됩니다. 개발을 보다 효율적으로 만들어준다는 아주 큰 장점이 있기에, 이에 대한 학습을 따로 하여 사용하고 있는 것 같습니다.
'백엔드 > SpringBoot' 카테고리의 다른 글
Fetch Join과 비동기로 283배 시간 단축하기! (0) | 2024.01.21 |
---|---|
LazyInitializationException 왜 발생하고, 어떻게 해결할까🧐 (0) | 2024.01.06 |
@Transactional 어노테이션을 뜯어보자. (+ 테스트 시 주의할 점) (0) | 2023.12.11 |
[SpringBoot] @Repository와 같은 빈이 생성되는 클래스에서 @Value로 주입받은 변수를 생성자에서 써도 될까? (1) | 2023.10.19 |
[SpringBoot] 프로젝트 생성하는 다양한 방법 (0) | 2023.10.09 |