하위 태스크 1
JDK 설치 및 버전 확인
로컬 환경에 JDK 17+ 설치 후
java -version으로 버전 검증
Azul이 제공하는 JDK 17 (LTS)를 설치한다. 다운로드 페이지에서 Windows x86 64-bit 용 JDK를 .zip 형식으로 다운로드한다.

zulu17.64.15-ca-jdk17.0.18-win_x64.zip 파일의 압축을 해제한다. 압축이 해제된 내용이 들어있는 폴더의 이름을 azul-17.0.18로 변경한다. azul-17.0.18 폴더를 C:\Users\사용자명\.jdks\azul-17.0.18에 위치시킨다.

하위 태스크 2
JAVA_HOME 설정
JAVA_HOME및Path환경 변수를 올바르게 설정
시스템 변수에 JAVA_HOME을 추가한다. 값은 C:\Users\사용자명\.jdks\azul-17.0.18로 한다.

Path 시스템 변수를 수정한다. 값에 %JAVA_HOME%\bin을 추가한다.

터미널을 열어 java -version을 입력한다. 설치된 Java의 버전이 표시되어 JDK 설치가 완료됨을 확인할 수 있다.

하위 태스크 3 ~ 4
IntelliJ 설치 및 플러그인 설정
IntelliJ IDEA 설치 후 Spring, Gradle, Lombok 플러그인 활성화
Gradle 기반 프로젝트 열기
IntelliJ에서
hanbit-springboot/ioc프로젝트를 Gradle 프로젝트로 열기
공식 사이트를 통해 IntelliJ IDEA를 설치한다. 환영 창에서 ‘열기’ 버튼을 클릭하고 hanbit-springboot/ioc를 선택한다.

‘프로젝트 구조’ 창에 진입한다. SDK는 ‘탐지된 SDK’ 옵션 그룹에 있는 Azul Zulu 17.0.18을 선택한다. 언어 수준은 17을 선택한다.

플러그인 윈도우에서 Spring, Gradle, Lombok 플러그인이 활성화되어 있는지 확인한다.



IntelliJ IDEA의 우측 메뉴에서 Gradle 패널을 연다. 프로젝트 동기화 버튼을 클릭한다.

프로젝트 동기화가 완료되면 Gradle 패널에 동기화된 내용이 표시된다.

Failed to calculate the value of task ':compileJava' property 'javaCompiler'.
설치된 JDK와
build.gradle에 명시된 버전이 일치하지 않아 발생한다.
hanbit-springboot/ioc/build.gradle은 요구 JDK 버전을 21로 명시하고 있다.JDK 21을 새롭게 설치하고 프로젝트 구조 창에서 SDK와 언어 수준을 변경한다.
Gradle 프로젝트 동기화를 다시 시도한다.
하위 태스크 5
build.gradle 구조 분석
plugins, dependencies, java toolchain, repositories 섹션 분석
ioc 프로젝트의 build.gradle 파일 일부는 다음과 같다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.5.0'
id 'io.spring.dependency-management' version '1.1.7'
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}plugins: 사용할 플러그인을 선언한다. 이 프로젝트는 Java 프로젝트이며, 스프링 부트 플러그인을 사용하고 의존성 버전을 자동 관리함을 알 수 있다.java.toolchain: Java의 버전을 지정한다. 이 프로젝트는 JDK 21을 사용한다.repositories: 라이브러리를 다운로드할 소스 저장소를 지정한다. 이 프로젝트는 Maven 저장소를 사용한다.dependencies: 프로젝트가 의존하는 라이브러리를 선언한다.implementation설정키는 컴파일 및 실행 시 모두 필요한 라이브러리,testImplementation설정키는 테스트 코드 실행 시에만 필요한 라이브러리,testRuntimeOnly설정키는 테스트를 실행할 때 사용하고 컴파일 시점에는 사용하지 않는 라이브러리를 의미한다.
하위 태스크 6
프로젝트 디렉터리 구조 확인
src/main/java,src/main/resources,build.gradle역할 파악
src/main/java: Java 애플리케이션 코드가 위치하는 경로src/main/resources: 설정 파일, 템플릿 등의 리소스 파일이 위치하는 경로build.gradle: 프로젝트의 의존성 및 빌드 설정을 명시하는 파일
하위 태스크 7 ~ 8
DemoApplication 실행
DemoApplication의main을 실행하여 스프링 부트 부팅 경험
실행 로그 읽기
Spring Boot 시작 로그와 버전, 포트 정보를 로그에서 확인
Gradle 패널의 ioc > Tasks > application > bootRun을 선택하여 DemoApplication을 실행한다. 터미널에 :: Spring Boot :: (v3.5.0)가 나타난다. Brewing coffee with ... Machine과 유사한 일련의 문자열이 출력되는 것을 확인할 수 있다.

하위 태스크 9 ~ 10
application.properties 수정
spring.application.name과server.port설정 변경
설정 변경 후 재실행
변경된 설정이 실제 실행 결과(로그, 포트)에 반영되는지 확인
포트 번호를 포함한 로그를 관찰하기 위해서 build.gradle에 의존성을 추가한다.
dependencies {
// ...
implementation 'org.springframework.boot:spring-boot-starter-web'
}src/main/resources/application.properties의 내용을 수정한다.
# 애플리케이션 이름
spring.application.name=hello-springboot
# 서버 포트
server.port=9090다시 스프링 부트를 부팅한다. INFO 4412 --- [hello-springboot]와 같은 로그 접두사에서 변경된 애플리케이션 이름을 확인할 수 있다. Tomcat initialized with port 9090 (http)와 같은 로그에서 서버 포트가 9090으로 변경되었음을 알 수 있다.

http://localhost:9090에 접근하면 Whitelabel Error Page를 볼 수 있다.



