
이번 정리는 Backend 영역에서 사용하는 Build System과 Spring Boot의 기본 구조를 정리한 내용이다. Java 초반 수업에서 설정했던 Build System이 왜 필요한지, 그리고 Spring Boot와 어떤 관계가 있는지를 중심으로 정리한다.
Build System은 프로젝트를 컴파일하고, 의존성을 관리하고, 실행 가능한 형태로 만드는 도구이다. Java 프로젝트는 단순히 .java 파일만으로 실행되는 것이 아니라, 외부 라이브러리와 함께 컴파일되고 패키징되어야 한다.
둘 다 의존성 관리와 빌드 자동화를 담당하지만, Gradle이 더 빠르고 유연하다는 평가를 받는다. Spring Boot 프로젝트에서는 기본적으로 Gradle 또는 Maven 중 하나를 선택한다.
이 파일은 프로젝트의 설정 파일이다. 어떤 라이브러리를 쓸지, 어떤 플러그인을 적용할지, 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)
}
}
Spring Boot 플러그인을 적용한다. 이 플러그인이 내부적으로 많은 자동 설정을 가능하게 한다.
repositories {
mavenCentral()
maven { url = 'https://repo.spring.io/snapshot' }
}
의존성을 다운로드할 저장소를 지정한다. 대부분 Maven Central을 사용한다.
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'
}
이 부분이 핵심이다. 프로젝트가 사용하는 외부 라이브러리를 정의한다.
여기서 의존성을 추가하면 Gradle이 자동으로 다운로드하여 classpath에 포함시킨다.
Spring Boot는 기존 Spring Framework를 쉽게 사용할 수 있도록 만든 확장 프레임워크이다.
기존 Spring은 설정이 매우 복잡했다. XML 설정, 서버 설정, DispatcherServlet 설정 등을 수동으로 구성해야 했다.
Spring Boot는 다음을 자동화한다.
Spring Boot 애플리케이션은 보통 다음과 같이 시작한다.
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@SpringBootApplication은 아래 3개의 애너테이션을 포함한다.
의존성에 따라 자동 설정을 수행한다. starter-web이 있으면 웹 서버 설정이 자동으로 구성된다.
현재 패키지 이하의 클래스를 스캔하여 Bean으로 등록한다.
Bean을 정의하는 설정 클래스임을 의미한다.
Spring Boot는 기본적으로 Logback을 사용한다. SLF4J를 통해 로그를 출력한다.
logger.info("Application started");
logger.debug("Debug message");
application.properties에서 설정 가능하다.
logging.level.root=DEBUG
TRACE는 가장 상세한 로그를 출력한다.
기본 포트는 8080이다.
실행 중에 또 실행하면 다음 오류가 발생한다.
해결 방법:
server.port=9090
1. Gradle이 의존성을 관리한다. 2. Spring Boot가 자동 설정을 수행한다. 3. Controller → Service → Repository → DB 구조로 동작한다. 4. JPA가 SQL을 생성한다. 5. 내장 Tomcat이 HTTP 요청을 처리한다.
이 단계는 단순한 도구 사용이 아니라, Backend 구조가 어떻게 자동화되는지를 이해하는 구간이다. 이제부터는 Controller, Bean, DI, JPA 흐름을 이해하는 것이 핵심이 된다.