[Spring] 01-1. Spring이란?

지찬우·2022년 12월 15일
1

Spring

목록 보기
1/27

학교에서 팀 프로젝트를 진행하며 서버를 개발해야 하는 일이 생겼다. 13주 이내로 프로젝트를 완성해야 하기 때문에 기초부터 차근차근 공부하며 개발을 하기에는 시간이 부족할 것 같아서 일단 무작정 만들어 봤던 Spring. 어떻게든 구현은 마쳤지만, 기본 개념이 안 잡혀있고 객체지향에 대한 이해도 부족한 것 같아서 inflearn에서 김영한 님의 ‘스프링 부트 핵심 원리 - 기본편’ 강의를 구매했다.(마침 할인도 하길래!) 종강했으니 바로 강의 들어야지~

그래서 이 시리즈는 인프런 강의로 공부하며 혼자 기록하고, 사람들과도 공유할 수 있도록 작성하는 글이다. 최대한 추가적인 정보는 공식 홈페이지, 문서를 보며 얻을 예정이다.
(개인적인 생각과 이해가 들어가 있기 때문에 저의 ‘무식함’이 있을 수 있습니다😜 혹시라도 이 글을 보게 되시는 분이 계시다면 잘못된 부분 댓글로 많이 알려주시면 너무 감사하겠습니다!!)


Spring이란 무엇인가❓

Spring은 특정한 하나를 의미하는 것이 아닌 여러 가지 기술들의 모음이다.

Spring이라는 단어

Spring이라는 단어는 문맥에 따라 다르게 해석될 수 있다.

  • Spring DI 컨테이너 기술
  • Spring Framework
  • Spring Framwork, Spring Boot 등을 모두 포함하는 Spring 생태계

Spring 생태계

  • Spring Framework
  • Spring Boot
  • Spring Data
  • Spring Security
  • Spring Batch

등등 매우 다양한 프로젝트가 존재한다.

Spring Projects
Spring 홈페이지에서 다양한 Spring Project들을 살펴볼 수 있다.

📌Spring Framework

스프링 프레임워크의 핵심적인 기술은 스프링 DI 컨테이너, AOP, 이벤트 등이다.

Spring 공식 홈페이지에는 다음과 같이 표현하고 있다.

Provides core support for dependency injection, transaction management, web apps, data access, messaging, and more.
스프링 공식 홈페이지

대충 ‘의존성(종속성)을 주입하고 트랜잭션을 관리해 주며, 웹 앱과 데이터 접근, 메시징 등의 핵심 지원을 제공한다.’라고 이해함

(의존성 주입? 트랜잭션? 많이 들어본 말들이지만 정확한 의미는 잘 모른다. 이번 글은 ‘Spring은 무엇인가’에 대한 내용이므로 저 말들에 대한 자세한 내용은 앞으로 차차 공부하며 작성할 예정이다.)

📌Spring Boot

스프링 부트는 이 스프링 프레임워크를 편리하게 사용할 수 있도록 지원해 준다. (최근에는 스프링 프레임워크와 스프링 부트를 기본으로 사용한다고 한다.)

어떠한 방식으로 편리하게 도와주는 것일까?

  • 단독으로 실행 가능한 스프링 애플리케이션을 쉽게 생성한다.
  • Tomcat과 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 된다.

예전과 달리 스프링 부트를 통해 빌드 후 서버 띄우는 것까지 알아서 해주기 때문에 편리하다는 말인 것 같다.

Spring 공식 홈페이지에는 다음과 같이 표현하고 있다.

Takes an opinionated view of building Spring applications and gets you up and running as quickly as possible.
스프링 공식 홈페이지

대충 ‘스프링 애플리케이션을 단독으로 빌드하고 가능한 한 빠르게 시작하고 실행할 수 있도록 한다.’라고 이해함

❗️오해하지 말자. Spring Boot는 Spring Framework와 별도로 사용하는 것이 아니다! 편리하게 사용할 수 있도록 도와주는 것이다!

📝그래서 도대체 Spring이 뭔데?

  • 웹 애플리케이션을 만들고, DB 접근을 편리하게 하기 위해? ❌
  • 웹 서버를 자동으로 설정해 주도록 하기 위해? ❌

모두 아니다.

핵심 컨셉을 이해하고 사용해야 내 것이 된다. 단순히 사용법만 아는 것이 아닌 본질을 이해해야 한다.

스프링은 JAVA 언어 기반의 프레임워크이다. JAVA의 가장 큰 특징, 바로 ‘객체 지향’이다.

📎”Spring은 좋은 객체 지향 애플리케이션 개발을 도와주는 프레임워크이다. 따라서 우리는 객체 지향 프로그래밍이 무엇인지 이해해야 한다. 이게 우리의 출발점이다.”


다음 시간에는 '좋은 객체 지향 프로그래밍'에 대한 내용을 학습할 예정이다.

profile
좋은 개발자가 되자.

0개의 댓글