wan-stack

Spring과 Spring Boot의 차이점 본문

스프링(Spring)

Spring과 Spring Boot의 차이점

wan-stack 2023. 11. 30. 17:04

Spring은 프레임워크이며, 

Spring Boot는 스프링 프레임워크를 기반으로 하는 도구

 

Spring은 설정 파일을 작성해야 하지만,

Spring Boot는 자동 설정을 제공해준다.

 

1. Spring

- 개발자가 직접 설정 파일을 작성하여 스프링 컨테이너 구성

- 필요한 빈 객체를 등록

- 빈 객체 간의 의존성을 설정해야한다.

- 특정한 구성을 위해 추가적인 라이브러리와 설정이 필요하다.

 

2. Spring Boot

- 개발자가 설정 파일을 작성할 필요가 없다.

- 프로젝트의 설정과 라이브러리 의존성을 자동으로 처리

- 실행 가능한 JAR 파일을 만들 수 있다. 

 

Spring은 프레임워크이며, Spring Boot는 스프링 프레임워크를 기반으로 한 도구!

 

 

Spring Framework의 특징

1. DI (Dependency Injection)

개발자가 Spring 프레임워크에 의존성을 주입하면서 객체 간 결합을 느슨하게 하는 것

객체 간 결합이 느슨하면 코드의 재사용성이 증가하고, 단위 테스트가 용이해진다.

 

2. IoC (Inversion of Control)

컨트롤의 제어권이 개발자에게 있는 것이 아닌 프레임워크가 대신해주는 것을 말한다.

Servlet이나 Bean 같은 코드를 개발자가 직접 작성하지 않고, 프레임워크가 대신 수행

 

제어의 역전

기존에는 자바 코드를 작성할 때, 객체의 생성, 의존관계 설정 등을 개발자가 해야 했지만,

프레임워크가 대신해준다는 의미

 

3. AOP(Aspect Oriented Programming)

AOP는 핵심기능을 제외한 부수적인 기능을 프레임워크가 제공하는 특징

 

예를 들어 Spring 프로젝트에 security를 적용하거나, logging 등을 추가하고 싶을 때,

기존 비즈니스 로직을 건들지 않고 AOP로 추가할 수 있다.

 

** 다른 프레임워크와의 통합

JUnit, Mockito와 같은 유닛 테스트 프레임워크와 통합이 간단하다

개발하는 프로그램의 품질이 향상된다.

 

3가지의 주요 차이점
(Dependency, Configuration, 배포)

1. Dependengy(의존성)

 Spring Framework 같은 경우 dependency를 설정해줄 때 설정 파일이 매우 길고,

 모든 dependency에 대해 버전 관리도 하나하나 해줘야 한다.

 

 Spring Boot의 경우는 dependency 설정을 쉽게 해줄 수 있고, 버전관리도 자동으로 해준다.

 

빌드 툴을 Gradle을 사용하는 경우

build.gradle 파일에 dependency를 추가해주면 Spring Boot로 웹 개발을 할 때,

필요한 모든 dependency를 자동으로 추가하고 관리해준다.

 

또 다른 예시로는  Spring의 경우 test 사용하고자 하는 경우

Spring Test, JUnit, Hamcrest, Mockito등 모든 라이브러리를 추가해줘야 하지만,

 

Spring Boot는 spring-boot-starter-test만 추가해주면 된다.

 

2. Configuration

 configuration설정할 때도 매우 길고, 모든 어노테이션 및 빈 등록 등을 설정해줘야 한다.

 

Spring Boot는 application.properties 파일이나 application.yml 파일에 설정하면 된다.

 

3. 편리한 배포

Spring 프레임워크로 개발한 애플리케이션의 경우,

war파일을 Web Application Server에 담아 배포

 

Spring Boot의 경우, Tomcat이나 Jetty같은 내장 WAS를 가지고 있기 때문에

jar 파일로 간편하게 배포할 수 있다.

 

 

참고

https://programforlife.tistory.com/68

https://yamyam-spaghetti.tistory.com/56