
Spring은 웹 사이트 개발을 위한 백엔드 FrameWork이다.
FrameWork란 어떠한 목적을 쉽게 달성할 수 있도록 해당 목적에 관련된 코드의 뼈대를 미리 만들어둔 것을 의미한다.
스프링이 등장하기 전, 자바 그 자체로만 서비스를 개발하던 시기에는 하나의 서비스를 만들기 위해 자바뿐 아니라 DB와 연동하는 기술, 웹 서버를 구축하는 기술등 많은 기술들이 요구되었다.
하지만 스프링이 등장하고 자바로 서비스를 개발하던 시간을 눈에 띄게 줄어 들었다. 스프링은 자바로 서비스를 제작하는데 필요한 이러한 기술들의 모음이다. 데이터 접근, 데이터 통합, 웹, 코어 컨테이너, 테스트 등 여러가지 기술들을 모두 담고 있다. 이러한 기술들을 통해서 기존의 자바 프로그래밍을 보다 빠르고, 쉽고, 간편하게 만들어 준다.
스프링은 수십개의 세부 모듈 및 수십만줄의 방대한 코드로 이루어진 프레임워크이다. 그럼에도 불구하고 스프링을 설명할 때는 경량급이라는 수식어를 사용하고는 한다.
이는 기존에 스프링 대신 사용하던 기술들과 비교하여, 스프링을 사용했을 때에 개발자가 작성해야하는 코드가 상대적으로 적다는 것을 말하기 위함이다.
DI란 개발자가 Spring 프레임워크에 의존성을 주입하면서 객체 간 결합을 느슨하게 하는 것이다.
객체 간 결합이 느슨하면 코드를 여기저기서 재사용하기 편해진다.
IoC는 컨트롤의 제어권이 개발자에게 있는 것이 아닌 프레임워크가 대신 해주는 것을 의미한다.
Servlet이나 Bean 같은 코드를 개발자가 직접 작성하지 않고, 프레임워크가 대신 수행해준다
서블릿(Servlet)은 자바로 동적 웹 페이지를 생성하는 서버 측 프로그램으로 톰캣(Tomcat) 같은 컨테이너에서 관리되며 HTTP 요청을 처리합니다. 빈(Bean)은 스프링 컨테이너가 생성, 의존성 주입, 생명주기를 관리하는 자바 객체로 재사용 가능한 컴포넌트를 뜻합니다.
기존에는 자바 코드를 작성할 때 객체의 생성, 의존관계 설정등을 개발자가 해야했지만, 프레임워크가 대신 해줄수 있다는 의미이다.
AOP는 핵심기능을 제외한 부수적인 기능을 프레임워크가 대신 제공하는 것이다. 보안 옵션을 적용하거나, 로깅등을 추가하고 싶을때 기존 비즈니스 로직을 수정하지 않고 AOP로 수정할 수 있다.
스프링은 기존 기술의 복잡성을 크게 줄인 프레임워크이지만, 그럼에도 불구하고 스프링을 사용하기 위해서는 여러 가지의 사항들을 설정해주어야 한다.
스프링부트는 스프링의 복잡한 설정 정보를 간략하게 줄일 수 있다.
이러한 이유에는 스프링 부트가 기존의 복잡한 설정을 대신 해주고 있기 때문인데, 스프링부트는 스프링으로 애플리케이션을 만들 때에 필요한 설정을 간편하게 해주는 별도의 프레임워크이다.
초기 설정을 간편하게 해주는 장점이외에도 몇가지의 장점들이 더 있다. 기존에는 배포를 할 경우 별도의 외장 웹 서버를 설치하고 배포를 진행했는데, 스프링 부트는 자체적인 웹 서버를 내장하고 있어, 빠르고 간편하게 배포가 가능하다.
또한 스프링부트를 사용하면 독릭접으로 실행 가능한 Jar 파일로 프로젝트를 빌드 할 수 있다. 이는 클라우드 서비스나 도커 같은 가상화 환경에 빠르게 배포가 가능하다.
Spring은 기존의 손이 많이 갔던 자바 애플리케이션을 더 쉽게 만들 수 있게 도와주는 프레임워크 이고, Spring Boot는 Spring보다 개발자가 더더욱 개발에만 집중할 수 있도록 쉽게 만들어주는 프레임워크이다.
자바 프로그래밍 : 귀찮음 > Spring : 간편함 > Spring Boot : 개꿀따라쉬
근데 내가 자바 개발잔데, 디테일한 설정 하나하나 다 해줘야 되는 상황이면 자동으로 설정되는 Spring Boot 보단 조금 더 귀찮지만 내 입맛대로 만들 수 있는 Spring이 더 좋은 선택이다.
근데 난 아무것도 모르는 감자니깐 Spring Boot 개꿀 ㅋㅋ
Spring은 내일의 나에게 맡기자.