들어가기 전
Spring과 Spring Boot는 모두 Java 기반의 웹 애플리케이션 개발을 위한 프레임워크입니다.
Spring 관련 책을 보시면 순수 Spring을 시작하기 위해 환경설정하는 것만 100P가 넘을 정도입니다.
간단하게 설명을 하자면 아래와 같이 말할 수 있습니다.
- Spring : 자바기반 프레임워크
- Spring Boot : Spring을 빠르고 쉽게 설치하게 도와주는 도구
Spring
Spring은 JAVA 기반의 오픈 소스 애플리케이션 프레임워크로서, 엔터프라이즈 애플리케이션 개발을 위한 포괄적인 솔루션을 제공하는 프레임워크입니다. Spring은 애플리케이션의 기반 인프라스트럭처를 제공하고, 개발자가 비즈니스 로직에 집중할 수 있도록 여러 가지 기능을 제공합니다.
Spring은 엔터프라이즈 애플리케이션을 개발하기 위한 경량화된 프레임워크로서 다음과 같은 특징이 있습니다.
- IoC (Inversion of Control, 제어의 역전): 개발자가 코드의 흐름을 제어하는 것이 아니라 Spring 컨테이너에게 객체의 생성과 관리를 맡김으로써 애플리케이션의 컴포넌트들 간의 의존성을 줄이고 유연한 구조를 제공합니다.
- DI (Dependency Injection, 의존성 주입): 객체 간의 의존성을 외부에서 주입하여 결합도를 낮추고 테스트 용이성을 향상시킵니다.
- AOP (Aspect-Oriented Programming, 관점 지향 프로그래밍): 애플리케이션의 핵심 로직과는 별개로 횡단 관심사 (cross-cutting concerns)를 모듈화하여 코드의 중복성을 줄이고 관리할 수 있습니다.
- MVC (Model-View-Controller) 아키텍처: 애플리케이션을 모델, 뷰, 컨트롤러로 구분하여 개발하고 관리합니다.
- 다양한 모듈과 라이브러리: Spring은 다양한 모듈과 라이브러리를 제공하여 데이터 액세스, 보안, 웹 개발, 배치 처리, 메시징 등 다양한 기능을 지원합니다.
Spring은 XML 또는 Java Config와 같은 설정 방식을 사용하여 애플리케이션의 설정과 관련된 작업을 처리합니다. 이를 통해 개발자는 애플리케이션의 동작을 세밀하게 제어할 수 있습니다.
위 말이 무슨 말인지?..
예를 들어, Spring을 '식당' 이라고 생각해보겠습니다.
IoC (Inversion of Control, 제어의 역전)은 여러분이 오마카세 같은 곳에 갔을 때를 생각하시면 됩니다. 내가 특정 음식을 주문하는 것이 아니라 주방장 알아서 만들어줍니다. 개발자가 해야되는 것이 아니라 Spring이 알아서 관리/생성을 해주는 것이죠.
DI (Dependency Injection, 의존성 주입)은 손님이 식당에서 음식을 만들지는 않죠? 개발자는 직접 객체를 생성하거나 의존성을 해결할 필요없이 Spring이 필요한 객체를 주입해줍니다.
AOP (Aspect-Oriented Programming, 관점 지향 프로그래밍)는 식당에서 음식을 준비하면서 청소, 서빙, 결제 등의 공통된 작업을 별도의 모듈로 분리하여 처리하는 것과 비슷합니다. 식당이 각각의 작업을 관리하고 실행합니다.
Spring은 애플리케이션의 핵심 로직과는 별개로 횡단 관심사를 모듈화하여 코드의 중복성을 줄이고 관리할 수 있습니다.
MVC (Model-View-Controller) 아키텍처는 식당의 주방, 서빙, 손님과 같이 역할을 분리하여 번잡하지 않고 역할을 조화롭게 동작하게 하는 겁니다. Spring은 MVC 아키텍처를 지원하여 애플리케이션을 모델(Model), 뷰(View), 컨트롤러(Controller)로 구분하여 개발하고 관리합니다.
다양한 모듈과 라이브러리는 식당에서 셀프바를 이용하여 다양한 메뉴, 재료 등을 제공하여 다양한 요리를 제공하여 소비자도 입맛에 맞게 제조할 수 있게 만드는 것입니다. 즉, 개발자가 원하는 기능을 개발하기 위해 쉽고 빠르게 사용하기 위해 제공해주는 것이라고 할 수 있습니다.
Spring Boot
Spring Boot는 Spring 프레임워크를 사용하여 독립적이고 자동화된 Spring 기반 애플리케이션을 빠르게 개발하기 위한 도구입니다. 스프링 기반 애플리케이션을 빠르게 시작할 수 있는 자동 구성 기능을 제공합니다. 개발자가 별도의 설정 없이 간단한 몇 줄의 코드로 애플리케이션을 실행할 수 있습니다.
개발자가 애플리케이션의 의존성 관리를 위해 XML 설정이나 복잡한 설정 파일을 작성할 필요가 없습니다. 대부분의 의존성은 자동으로 관리되며, 설정은 약속된 규칙에 따라 자동으로 수행됩니다.
내장형 서버를 제공하여 애플리케이션을 단독으로 실행할 수 있습니다. 별도의 웹 서버 설치가 필요하지 않으며, 톰캣, 제티, 언더토우와 같은 서버를 내장하여 사용할 수 있습니다.
강력한 개발 도구와 기능을 제공합니다. Spring Boot Actuator를 통해 애플리케이션의 상태 모니터링, 메트릭 수집, 운영 관리 기능 등을 쉽게 추가할 수 있습니다.
다양한 외부 설정 옵션을 제공합니다. application.properties 또는 application.yml 파일을 통해 애플리케이션의 설정을 관리할 수 있습니다.
Spring Boot는 Spring 프레임워크와 호환되며, Spring의 기능과 생태계를 그대로 사용할 수 있습니다. 또한 Spring Boot는 마이크로서비스 아키텍처와 클라우드 네이티브 애플리케이션 개발에 특히 유용합니다.
Spring과 Spring Boot는 각각의 특징과 장점을 가지고 있으며, 프로젝트의 요구사항과 개발 환경에 따라 선택할 수 있습니다. Spring Boot는 Spring을 기반으로 한 개발 생산성을 높여주는 도구로서, 더 간편하고 빠른 애플리케이션 개발을 위해 널리 사용되고 있습니다.
스프링부트 사용방법
https://start.spring.io/ 링크에 접속하게 되면 해당 페이지가 나옵니다.
프로젝트 / 자바 버전 등등 정보를 설정하여 프로젝트 환경 설정을 빠르게 할 수 있습니다.
'개발 지식' 카테고리의 다른 글
[개발지식] 롬복(Lombok)이란? | 민민의 하드디스크 - 티스토리 (0) | 2023.06.28 |
---|---|
코드 리팩토링(Refactoring)이란? | 민민의 하드디스크 - 티스토리 (1) | 2023.06.26 |
[개발 지식] SQL 인젝션(Injection)이란? | 민민의 하드디스크 - 티스토리 (0) | 2023.06.12 |
[개발 지식] var와 let에 대하여 | 민민의 하드디스크 - 티스토리 (0) | 2023.05.11 |
[개발 지식] 연산자 "=="와 "==="의 차이 | 민민의 하드디스크 - 티스토리 (0) | 2023.05.09 |