
대표적으로 다음 편의 기능을 많이 활용한다.
스프링부트 프로젝트는 보통 2가지로 시작한다.
build.gradle의 dependencies에 선언한다build.gradle 작성에 사용된다
build.gradle(또는 프로젝트 루트)을 열면 Gradle이 의존성 다운로드/동기화를 진행한다.

.idea/: IntelliJ IDEA가 프로젝트를 열 때 사용하는 IDE 설정/메타데이터 폴더(팀 공용이 아니라면 보통 Git에 올리지 않음).src/: 스프링부트 표준 소스 루트로, 크게 main과 test로 나뉜다build/: Gradle 빌드 결과물(컴파일 산출물, 생성된 JAR 등)이 쌓이는 폴더로, 보통 Git에서 제외한다src/main/java: 애플리케이션의 실제 구현 코드(컨트롤러/서비스/도메인 등)가 위치한다src/main/resources: 설정 및 리소스가 위치하며 application.properties/application.yml 같은 설정 파일이 여기에 온다src/main/resources/static: CSS/JS/이미지/정적 HTML 같은 정적 파일을 두는 위치로, 스프링부트가 정적 리소스로 서빙할 때 자주 사용된다. (주로 REST API이므로 백엔드 데이터만 처리하지만, 예외적으로 MVC 아키텍쳐의 경우 하나의 서버에서 정적 리소스도 함께 제공되는 경우가 있고 이 때 정적 리소스를 위치시키는 폴더가 static, templates이다.)application.properties: properties와 yaml(야믈) 파일 중 yml(=yaml)이 더많이 사용된다.src/test/java: JUnit 등으로 작성하는 테스트 코드 위치이며, 스프링부트 기본 프로젝트가 처음부터 test 폴더를 제공하는 건 테스트가 개발 흐름에서 중요하다는 전제를 반영한다.build.gradle: Gradle 빌드 스크립트로, 플러그인/의존성/빌드 설정을 정의( Maven을 쓰면 이 역할을 pom.xml이 담당)settings.gradle: 프로젝트 이름 등 Gradle 프로젝트의 기본 설정을 담고, 멀티 프로젝트(모노레포) 구성에서도 사용.gradle/: Gradle이 빌드 과정에서 생성하는 캐시/임시 파일 등이 저장되는 폴더로, 재빌드 시간을 줄이는 데 사용gradle/wrapper/ + gradlew(gradlew.bat): Gradle Wrapper 구성 요소로, 로컬에 Gradle을 별도 설치하지 않아도 지정된 버전으로 빌드가 가능하게 해준다.gitignore: 빌드 결과물(build/), IDE 설정(.idea/), 로컬 캐시(.gradle/) 같은 “소스가 아닌 것”을 Git 추적에서 제외하기 위한 파일/build와 /out 차이)
빌드 설정을 IntelliJ로 변경할 경우 build/ 파일이 아닌 out/ 파일이 될 수도 있고, 빌드가 꼬일 경우 해당 파일을 아예 지웠다가 다시 실행하는 방법도 있으니 참고하자
Configuration(환경설정, 구성도)은 스프링의 환경설정 파일이다.
server.port = 8081 의 형식으로 작성
application.properties로 설정 후 8080포트 -> 8081포트로 변경후 빌드
application.yml로 설정 후 8080포트 -> 8081포트로 변경후 빌드
@SpringBootApplication이 붙은 main 클래스를 실행하면 기본 설정으로 서버가 기동된다(기본 포트는 8080).gradlew / gradlew.bat: Gradle Wrapper 실행 스크립트로, 프로젝트에서 정의한 Gradle 작업을 실행한다 (jar 파일을 생성하는 목적).gradle/: 빌드 과정의 캐시/임시 파일 등이 저장될 수 있다.plugins {
id 'java'
id 'org.springframework.boot' version '3.5.9'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'com.beyond'
version = '0.0.1-SNAPSHOT'
description = 'basic project for Spring Boot'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
// gradle build tool을 사용하더라도 저장소로 maven repository를 사용.
repositories {
mavenCentral()
}
// dependencies(의존성): 이 프로젝트에서 사용할 라이브러리(외부 모듈) 목록
// - Spring Web: HTTP 통신(요청/응답) 처리를 위한 라이브러리 (기본 의존성)
// - Test / JUnit: 테스트 작성을 위한 라이브러리
// * 테스트란?
// - 코드로 코드를 검증하는 개념
// - 하나의 코드(샌드박스)를 실행하면 input 값과 output 값이 존재함
// - 사람이 하는 테스트: 실제 응답값과 예상 출력값이 동일한지 직접 확인
// - 여기서 말하는 테스트: test 디렉터리에서 테스트 코드를 작성해,
// 코드가 기대한 대로 동작하는지 자동으로 검증(코드 검수)하는 것
// - 이 과정에서 사용하는 라이브러리가 Test / JUnit
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
./gradlew build : 빌드 + 테스트 등 라이프사이클 작업이 함께 수행될 수 있으며, Spring Boot 플러그인이 적용된 경우 bootJar도 연동되어 실행될 수 있다./gradlew bootJar : 실행 가능한(executable) JAR을 만드는 데 초점을 둔 태스크./gradlew clean build : 기존 빌드 결과물을 정리한 뒤 다시 빌드build/libs/ 아래에 생성된다.java -jar 프로젝트명-버전.jar 형태로 실행하며, 종료는 Ctrl + C로 한다
bootJar명령어를 통해 jar 파일 생성 후 /build/libs 위치에 생성된 jar 파일 확인- 인텔리제이의 실행버튼 클릭시 출력되는 화면과 동일한 화면 터미널 내 확인 가능