학교에서 팀 프로젝트를 진행하며 서버를 개발해야 하는 일이 생겼다. 13주 이내로 프로젝트를 완성해야 하기 때문에 기초부터 차근차근 공부하며 개발을 하기에는 시간이 부족할 것 같아서 일단 무작정 만들어 봤던 Spring. 어떻게든 구현은 마쳤지만, 기본 개념이 안 잡혀있고 객체지향에 대한 이해도 부족한 것 같아서 inflearn에서 김영한 님의 ‘스프링 부트 핵심 원리 - 기본편’ 강의를 구매했다.(마침 할인도 하길래!) 종강했으니 바로 강의 들어야지~
그래서 이 시리즈는 인프런 강의로 공부하며 혼자 기록하고, 사람들과도 공유할 수 있도록 작성하는 글이다. 최대한 추가적인 정보는 공식 홈페이지, 문서를 보며 얻을 예정이다.
(개인적인 생각과 이해가 들어가 있기 때문에 저의 ‘무식함’이 있을 수 있습니다😜 혹시라도 이 글을 보게 되시는 분이 계시다면 잘못된 부분 댓글로 많이 알려주시면 너무 감사하겠습니다!!)
Spring은 특정한 하나를 의미하는 것이 아닌 여러 가지 기술들의 모음이다.
Spring이라는 단어는 문맥에 따라 다르게 해석될 수 있다.
등등 매우 다양한 프로젝트가 존재한다.
Spring Projects
Spring 홈페이지에서 다양한 Spring Project들을 살펴볼 수 있다.
스프링 프레임워크의 핵심적인 기술은 스프링 DI 컨테이너, AOP, 이벤트 등이다.
Spring 공식 홈페이지에는 다음과 같이 표현하고 있다.
Provides core support for dependency injection, transaction management, web apps, data access, messaging, and more.
스프링 공식 홈페이지
대충 ‘의존성(종속성)을 주입하고 트랜잭션을 관리해 주며, 웹 앱과 데이터 접근, 메시징 등의 핵심 지원을 제공한다.’라고 이해함
(의존성 주입? 트랜잭션? 많이 들어본 말들이지만 정확한 의미는 잘 모른다. 이번 글은 ‘Spring은 무엇인가’에 대한 내용이므로 저 말들에 대한 자세한 내용은 앞으로 차차 공부하며 작성할 예정이다.)
스프링 부트는 이 스프링 프레임워크를 편리하게 사용할 수 있도록 지원해 준다. (최근에는 스프링 프레임워크와 스프링 부트를 기본으로 사용한다고 한다.)
어떠한 방식으로 편리하게 도와주는 것일까?
예전과 달리 스프링 부트를 통해 빌드 후 서버 띄우는 것까지 알아서 해주기 때문에 편리하다는 말인 것 같다.
Spring 공식 홈페이지에는 다음과 같이 표현하고 있다.
Takes an opinionated view of building Spring applications and gets you up and running as quickly as possible.
스프링 공식 홈페이지
대충 ‘스프링 애플리케이션을 단독으로 빌드하고 가능한 한 빠르게 시작하고 실행할 수 있도록 한다.’라고 이해함
❗️오해하지 말자. Spring Boot는 Spring Framework와 별도로 사용하는 것이 아니다! 편리하게 사용할 수 있도록 도와주는 것이다!
모두 아니다.
핵심 컨셉을 이해하고 사용해야 내 것이 된다. 단순히 사용법만 아는 것이 아닌 본질을 이해해야 한다.
스프링은 JAVA 언어 기반의 프레임워크이다. JAVA의 가장 큰 특징, 바로 ‘객체 지향’이다.
📎”Spring은 좋은 객체 지향 애플리케이션 개발을 도와주는 프레임워크이다. 따라서 우리는 객체 지향 프로그래밍이 무엇인지 이해해야 한다. 이게 우리의 출발점이다.”
다음 시간에는 '좋은 객체 지향 프로그래밍'에 대한 내용을 학습할 예정이다.