이번 포스팅에서는 Spring Framework와 Spring Boot의 차이에 대해 알아보겠습니다.
💡 Spring Framework가 뭐야?
Spring Framework는 자바 플랫폼을 위한 오픈소스로 공개된 애플리케이션 프레임워크입니다.
동적인 웹 사이트를 개발하는데 필요한 여러 가지 서비스를 제공하는데 그중 특징적인 것 3가지만 정리하겠습니다.
1. 제어의 역전 (IoC, Inversion of Control)
일반적으로 개발자가 필요한 객체를 생성하고 해제하는 등 관리하는 방법이 아닌, 객체를 선언해놓기만 하면 (애노테이션을 이용하면 간단하게 가능합니다) 스프링 컨테이너가 자동으로 객체를 생성해주고 객체의 라이프 사이클을 관리해줍니다.
쉽게 말하면, 제어권이 개발자에게 있는게 아닌, 스프링 컨테이너에게 있기 때문에 제어의 역전이라고 부릅니다.
아래에 나올 '의존성 주입'이 해당 IoC 특성을 이용하는 것입니다.
2. 의존성 주입 (DI, Dependency Injection)
의존성 주입의 의미는, 어떠한 객체가 다른 객체를 참조할 때, 참조 변수만 선언해놓으면 스프링 컨테이너가 현재 스프링 컨텍스트에 존재하는 객체를 찾아서 자동으로 주입해주는 것을 의미합니다.
3. 관점 지향 프로그래밍 (AOP, Aspect Oriented Programming)
핵심 비즈니스 로직들을 관통하는 공통적인 "관점"을 따로 분리하는 방식의 프로그래밍 방법입니다.
만약 모든 메서드들의 실행 시간을 기록하고 싶다 가정하면,
모든 메서드들의 시작과 끝에 타이머 시작과 종료 코드를 넣어줘야합니다.
이럴 때 모든 메서드들의 시작과 끝에 동일한 로직들을 넣는 것이 아닌,
별개의 클래스로 두는 방법입니다.
AOP를 이용함으로써 개발자들이 비즈니스 로직에 집중할 수 있게 되고, 코드의 중복을 제거할 수 있다는 큰 장점이 있습니다.
또한 AOP를 적용함으로써 객체 지향 프로그래밍(OOP, Object Oriented Programming)을 잘 지킬 수 있게 됩니다.
💡 Spring Boot가 뭐야?
Spring Boot는 Spring Framework를 사용하여 애플리케이션을 개발할 때 필요한 번거로운 설정 및 요구사항의 많은 부분에 대해
자동화를 지원하여 Spring Framework 기반 애플리케이션을 더 빠르게 실행 가능하도록 해주는 프레임워크입니다.
특징
- Tomcat이나 Jetty, Undertow을 내장하고 있습니다. (WAS 설정X, WAR 파일 패키징할 필요 없이 JAR 파일로 패키징하여 바로 실행가능합니다.)
- 빌드 환경을 단순화할 수 있도록 'starter' 라이브러리를 통해 기본적으로 필요한 라이브러리들을 일괄 제공합니다. ex)
spring-boot-starter-web
- 라이브러리 버전 호환 자동화 (따로 라이브러리 버전을 관리할 필요 없습니다.)
- configuration 클래스 통한 간편한 설정 관리 (XML 설정 X)
- 설정의 자동화 (애노테이션을 통해 기존에 필요했던 설정들을 자동으로 등록해줍니다.)
- 배포에 필요한 준비 요소들을 제공합니다. (health checcks 등..)
'Web > Spring' 카테고리의 다른 글
[간단 정리] Spring Data Redis (0) | 2024.04.01 |
---|---|
[Spring Batch] 1. 스프링 배치 공부 순서와 간단 소개 (0) | 2023.06.11 |
@Component에 대해 (@Bean) (0) | 2022.07.26 |
@RequestBody 붙였어?? (0) | 2022.07.13 |
Filter와 OncePerRequestFilter (0) | 2022.02.22 |