Spring과 Spring Boot를 비교해보자

코린이·2024년 9월 22일

Spring과 Spring Boot는 둘 다 Java 기반의 애플리케이션을 개발할 때 사용하는 프레임워크지만, 목적과 편의성 면에서 차이가 있습니다.

Spring Framework

Spring은 Java 기반 애플리케이션을 개발하기 위한 오픈소스 프레임워크입니다.
의존성 주입(DI), AOP(Aspect-Oriented Programming) 같은 핵심 기능을 제공하여 복잡한 Java 애플리케이션의 구조를 단순화합니다.

XML 설정이나 자바 설정 파일을 통해 각 컴포넌트에 대한 설정을 세밀하게 조절할 수 있습니다. 하지만 개발자가 직접 대부분의 설정을 해야되기 때문에 설정 작업이 번거로울 수 있습니다.

Spring Boot

Spring Boot는 Spring의 복잡한 설정 작업을 자동화하여 빠르게 애플리케이션을 개발할 수 있도록 도와주는 프레임워크이며 이를 통해 Spring을 더욱 쉽게 사용할 수 있습니다.

Spring Boot는 Spring과 비교하였을 때 다음과 같은 장점들을 가지고 있습니다.

  • 미리 정의된 기본 설정과 자동 설정 기능을 통해 복잡한 XML 설정이나 Java 설정 파일을 크게 줄였습니다.
  • 기본적으로 Spring Boot 스타터 패키지를 통해 필요한 의존성을 쉽게 추가할 수 있습니다.
  • 내장 서버(Tomcat, Jetty 등)를 제공하여 애플리케이션 실행이 간편합니다.

그럼 각각의 기능에 대해 한번 살펴보도록 하겠습니다.

Spring Boot의 장점

자동 설정(Auto-configuration)

Spring Boot는 어플리케이션의 실행 환경이나 코드에 따라 필요한 빈이나 설정을 자동으로 적용합니다.
개발자가 따로 명시하지 않으면 스프링부트가 기본적을 제공하는 설정을 자동적으로 사용합니다.

예를 들어 만약 Spring Boot 프로젝트에서 데이터베이스 의존성을 추가하면, Spring Boot는 기본적으로 H2 같은 인메모리 데이터베이스를 자동으로 설정합니다. 만약 MySQL을 사용하고자 할 경우, 의존성만 추가하고 약간의 설정만 하면 됩니다. Spring Boot는 자동으로 데이터베이스 연결을 설정하고 필요한 빈을 구성합니다.

반대로 Spring 프로젝트에서 데이터베이스를 설정하려면, 별도로 데이터 소스, 트랜잭션 매니저 등을 명시적으로 설정해야하는 번거로움이 존재합니다.

Auto-configuration을 사용하고 싶다면 @EnableAutoConfiguration 또는 @SpringBootApplication 어노테이션을 추가하면 됩니다.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class TestApplication {

	public static void main(String[] args) {
		SpringApplication.run(TestApplication.class, args);
	}

}

스타터 패키지를 통한 간단한 의존성 추가

Spring Boot는 특정 기능을 사용할 때 필요한 의존성을 간단하게 추가할 수 있도록 스타터 패키지라는 것을 제공합니다. 스타터 패키지는 특정 기능을 위해 필요한 라이브러리와 설정을 미리 정의한 패키지로, 이를 사용하면 개발자가 각 라이브러리를 일일이 찾아 추가할 필요가 없습니다.

다음은 주로 사용하는 의존성 중 일부입니다.

  • spring-boot-starter-web: 이 스타터 패키지를 추가하면 Spring MVC, 내장 Tomcat 서버, Jackson 등의 라이브러리가 함께 포함됩니다. 개발자는 웹 애플리케이션 개발에 필요한 여러 라이브러리를 별도로 설정할 필요 없이 이 스타터 패키지를 추가하는 것만으로 쉽게 개발할 수 있습니다.
  • spring-boot-starter-data-jpa: JPA와 관련된 의존성과 설정이 포함되어 있어, 데이터베이스 관련 설정 작업이 대폭 줄어듭니다.

YAML/Properties 파일 사용

Spring Boot는 전통적인 XML 설정 대신, 더 간결하고 가독성이 좋은 application.propertiesapplication.yml 파일을 통해 설정할 수 있습니다. 이 파일들은 환경 설정이나 애플리케이션의 동작 방식을 간단하게 정의할 수 있게 합니다.

예를 들어 데이터베이스 설정을 할 때, 다음과 같이 application.properties 파일에 간단한 설정만 추가하면 Spring Boot가 나머지 설정을 자동으로 처리합니다.

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update

이러한 설정 파일을 사용하면 XML보다 훨씬 적은 설정으로 원하는 기능을 쉽게 구현할 수 있습니다.

내장 서버 (Embedded Server)

Spring Boot는 Tomcat, Jetty, Undertow 등의 웹 서버를 애플리케이션에 내장하여 제공합니다.
즉, 따로 서버 설정을 할 필요 없이 애플리케이션을 독립적으로 실행할 수 있습니다.

profile
호기심이 많고, 문제를 끝까지 해결하려는 집념이 강한 개발자입니다.

0개의 댓글