2024. 6. 15. 17:43ㆍSpring
오늘은 스프링과 스프링부트의 차이점에 대해 알아볼것이다.
결론부터 말하고 시작하자면 스프링은 개발을 편리하게 해주는 프레임워크고 스프링 부트는 스프링 프레임워크를 기반으로 한 도구이다.
즉 스프링 부트는 스프링에서 관리하기 까다로운 사항들을 더 쉽고 편하게 사용할 수 있게 만든것이다.
그러면 스프링과 스프링부트에 대해 알아보고 어떤 차이점이 있는지 자세히 알아보자
- 스프링의 등장배경
스프링이 사용되기 전에는 EJB(Enterpriese Java Bean)라는 기술을 이용해서 Web Application을 개발했는데 특정 회사의 EJB 컨테이너가 기술 구현이 어려웠고 프로그래밍 모델이 복잡하고 자동화된 테스트가 거의 불가능하다는게 문제였다.
특정 컨테이너에 의존하니 이식성이 낮아지고 프로그래밍 모델이 복잡하니 생산성을 저하하고 자동화된 테스트가 어려우니 초기에 버그잡는게 굉장히 어려웠다는것이다. 그래서 이러한 단점들을 해결하기 위해 순수 자바 객체만을 사용해 복잡성을 제거하고 쉽게 개발할 수 있도록 만든게 Spring이다.
EJB(Enterprise Java Bean) | JAVA EE(Enterprise Edition)에서 엔터프라이즈 애플리케이션의 비즈니스 로직을 구현하는데 사용되는 컴포넌트 |
POJO(Plain Old Java Object) | 특별한 규약이나 프레임워크에 의존하지 않는 순수한 자바 객체 |
스프링의 등장배경을 알아봤으니 스프링의 특징과 단점에 대해 알아보자
-스프링의 특징
스프링에는 대표적인 특징 4가지가 있다.
1. 제어 역전 IoC (Inversion of Control)
객체의 생성과 생명주기 관리를 개발자가 아닌 컨테이너가 담당해 코드의 유연성과 재사용성을 높인다.
2. 의존성 주입 DI (Dependency Injection)
객체 간의 의존성을 외부에서 주입해 코드의 결합도를 낮추고 유연성, 테스트 용이성을 향상 시킨다.
3. AOP 지원 (Aspect-Oriented Programming)
AOP(관점 지향 프로그래밍)를 지원하여, 로깅, 트랜잭션 관리 등의 공통 관심 사항을 분리하여 코드의 모듈성과 재사용성을 높인다.
4. 웹 개발 지원
Spring MVC(Model View Control) 같은 웹 프레임워크를 제공해 웹 애플리케이션의 개발을 쉽게한다.
- 스프링의 단점
1. 설정의 복잡성
스프링을 사용하기 위한 초기설정이 복잡하고 빈 정의, 다양한 컴포넌트 구성 등 많은 설정 코드를 작성해야 한다.
2. 높은 초기 학습 난이도
다른 프레임 워크에 비해 초기에 학습 해야할 부분이 많다. 즉 러닝커브가 높다
3. 의존성 관리 문제
여러 의존성의 버전을 관리하는 것이 복잡할 수 있다.
4. 별도의 WAS 서버 구성의 번거로움
스프링을 웹상에서 쓰기 위해선 Web Application Server(WAS)를 설치하고 설정해줘야 한다. 또한 서비스 하기 위해 별도의 서버에 수동으로 배포 해야하는 번거로움이 있다.
이러한 단점들을 보완하기 위해 스프링 부트가 개발 됐다.
- 스프링 부트의 특징
1. 간결한 설정
기본적인 설정을 자동으로 처리해줘서 개발자가 많은 설정을 하지 않아도 된다. 즉 개발에 집중할 수 있어 생산성이 높아진다.
2. 내장 서버
스프링의 단점이었던 WAS를 설치하고 설정할 필요 없이 내장된 서버 Tomcat을 제공해 별도의 서버 설정 없이 애플리케이션 실행이 가능하다. 수동으로 배포해야 했던 단점도 JAR파일을 만들어서 간편하게 배포 할 수 있다.
3. 의존성 관리 간소화
Maven, Gradle 같은 의존성 관리 도구와 함께 작동해 버전 충돌 문제를 자동으로 해결해주고 라이브러리의 버전을 일관되게 관리 해준다.
4. 운영 편의성
애플리케이션의 상태를 모니터링하고 관리할 수 있는 다양한 기능을 제공한다.
ex) 모니터링, 로깅, 보안 설정, 헬스 체크, 메트릭 수집 등
-결론
스프링 --> 프레임워크
스프링부트 --> 스프링을 더 편하게 쓰기위한 스프링 프레임워크를 기반으로 한 도구
스프링 부트는 내장 서버를 제공하고 더 편리한 배포가 가능하며 설정을 간소화해서 개발을 더 빠르고 간단하게 할 수 있다.
참고자료
spring 과 springBoot의 차이점 - 고승조님의 블로그 - 인프런 | 커뮤니티
spring 과 springBoot의 차이점 - Spring과 Spring Boot는 모두 스프링 프레임워크를 기반으로 한 자바 웹 개발 프레임워크입니다. 둘 간에는 몇 가지 차이점이 있습니다.Spring은 스프링 프레임워크의 핵심
www.inflearn.com
Spring과 Spring Boot의 차이점을 아시나요? I 이랜서 블로그
Java의 대표적인 백엔드 개발 프레임워크로 사용되는 Spring과 Spring Boot의 차이점에 대해 알려드립니다. I spring, spring boot, spring boot version, spring boot devtools, spring boot initializr, spring boot jsp
www.elancer.co.kr
'Spring' 카테고리의 다른 글
N + 1 문제 해결법 (0) | 2024.11.19 |
---|---|
N + 1 문제 (0) | 2024.11.18 |