Spring Boot (개념 / Gradle)

최병현·2026년 2월 13일

spring boot

목록 보기
1/34
post-thumbnail

이번 정리는 Backend 영역에서 사용하는 Build System과 Spring Boot의 기본 구조를 정리한 내용이다. Java 초반 수업에서 설정했던 Build System이 왜 필요한지, 그리고 Spring Boot와 어떤 관계가 있는지를 중심으로 정리한다.


1. Build System이란 무엇인가

Build System은 프로젝트를 컴파일하고, 의존성을 관리하고, 실행 가능한 형태로 만드는 도구이다. Java 프로젝트는 단순히 .java 파일만으로 실행되는 것이 아니라, 외부 라이브러리와 함께 컴파일되고 패키징되어야 한다.

대표적인 Build Tool

  • Maven
  • Gradle

둘 다 의존성 관리와 빌드 자동화를 담당하지만, Gradle이 더 빠르고 유연하다는 평가를 받는다. Spring Boot 프로젝트에서는 기본적으로 Gradle 또는 Maven 중 하나를 선택한다.


2. Gradle 구조 이해 (build.gradle)

이 파일은 프로젝트의 설정 파일이다. 어떤 라이브러리를 쓸지, 어떤 플러그인을 적용할지, Java 버전은 무엇인지 등을 정의한다.

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.5.11-SNAPSHOT'
	id 'io.spring.dependency-management' version '1.1.7'
}

group = 'com.temp'
version = '0.0.1-SNAPSHOT'
description = 'Demo project for Spring Boot'

java {
	toolchain {
		languageVersion = JavaLanguageVersion.of(17)
	}
}

1) plugins

Spring Boot 플러그인을 적용한다. 이 플러그인이 내부적으로 많은 자동 설정을 가능하게 한다.

2) repositories

repositories {
	mavenCentral()
	maven { url = 'https://repo.spring.io/snapshot' }
}

의존성을 다운로드할 저장소를 지정한다. 대부분 Maven Central을 사용한다.

3) dependencies

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	annotationProcessor 'org.projectlombok:lombok'
	runtimeOnly 'com.h2database:h2'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

이 부분이 핵심이다. 프로젝트가 사용하는 외부 라이브러리를 정의한다.

  • starter-web : REST API + 내장 Tomcat
  • starter-data-jpa : DB 접근 (Hibernate 포함)
  • devtools : 자동 재시작
  • lombok : 반복 코드 제거
  • h2 : 인메모리 DB

여기서 의존성을 추가하면 Gradle이 자동으로 다운로드하여 classpath에 포함시킨다.


3. Spring Boot란 무엇인가

Spring Boot는 기존 Spring Framework를 쉽게 사용할 수 있도록 만든 확장 프레임워크이다.

기존 Spring은 설정이 매우 복잡했다. XML 설정, 서버 설정, DispatcherServlet 설정 등을 수동으로 구성해야 했다.

Spring Boot는 다음을 자동화한다.

  • 내장 서버 제공 (Tomcat)
  • 자동 설정(Auto Configuration)
  • 의존성 관리 단순화
  • 빠른 실행

4. 메인 클래스의 핵심 애너테이션

Spring Boot 애플리케이션은 보통 다음과 같이 시작한다.

@SpringBootApplication
public class DemoApplication {

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

@SpringBootApplication은 아래 3개의 애너테이션을 포함한다.

1) @EnableAutoConfiguration

의존성에 따라 자동 설정을 수행한다. starter-web이 있으면 웹 서버 설정이 자동으로 구성된다.

2) @ComponentScan

현재 패키지 이하의 클래스를 스캔하여 Bean으로 등록한다.

3) @Configuration

Bean을 정의하는 설정 클래스임을 의미한다.


5. Logging

Spring Boot는 기본적으로 Logback을 사용한다. SLF4J를 통해 로그를 출력한다.

logger.info("Application started");
logger.debug("Debug message");

로그 레벨

  • TRACE
  • DEBUG
  • INFO (기본값)
  • WARN
  • ERROR
  • FATAL
  • OFF

application.properties에서 설정 가능하다.

logging.level.root=DEBUG

TRACE는 가장 상세한 로그를 출력한다.


6. Port 충돌 문제

기본 포트는 8080이다.

실행 중에 또 실행하면 다음 오류가 발생한다.

  • Port 8080 was already in use
  • Application failed to start

해결 방법:

  • 기존 실행 중인 애플리케이션 종료
  • 또는 포트 변경
server.port=9090

7. 전체 구조 흐름 (Backend 관점)

1. Gradle이 의존성을 관리한다. 2. Spring Boot가 자동 설정을 수행한다. 3. Controller → Service → Repository → DB 구조로 동작한다. 4. JPA가 SQL을 생성한다. 5. 내장 Tomcat이 HTTP 요청을 처리한다.


8. 핵심 정리

  • Gradle은 프로젝트의 빌드와 의존성 관리를 담당한다.
  • build.gradle은 프로젝트 설정의 중심 파일이다.
  • Spring Boot는 설정을 자동화한 Spring 확장 프레임워크다.
  • @SpringBootApplication은 자동 설정 + 컴포넌트 스캔을 포함한다.
  • 로그 레벨을 통해 애플리케이션 상태를 추적할 수 있다.
  • 포트 충돌은 실행 중복 문제다.

이 단계는 단순한 도구 사용이 아니라, Backend 구조가 어떻게 자동화되는지를 이해하는 구간이다. 이제부터는 Controller, Bean, DI, JPA 흐름을 이해하는 것이 핵심이 된다.

profile
Develop

0개의 댓글