그동안 Python Django 위주로만 백앤드를 공부해왔지만
Java Spring도 공부하는 것이 좀 더 많은 경험을 할 수 있을 것이라 생각되어
Infearn에 있는 김영한 강사님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 을 시청하면서 따라해봤다.
먼저 프로젝트를 생성해야 한다.
프로젝트 생성에는 Spring Initializer를 사용했다.

강의 영상이 업로드 된 지 4년이 지나서 그런지 Spring Initializer에서부터 차이가 좀 있었다.
강의에서는 Spring Boot 2.3.1을 선택해서 진행하지만, 현재는 2.3.1을 선택할 수 없어 강의에서 버전을 고르는 기준에 맞춰 정식릴리즈된 버전 중 가장 최신 버전을 선택해 진행했다.
Project Metadata의 Group은 보통 기업명 같은 것을 적는다지만 학습용이므로 강의와 똑같이 hello를 사용하였고 Artifact도 마찬가지로 강의와 똑같이 진행했다.

Dependencies는 라이브러리 선택이라고 한다.
Web 프로젝트를 진행하는 강의이므로 Spring Web과 Html을 동적으로 생성해주는 템플릿 엔진인 Thymeleaf를 선택하고 프로젝트를 생성했다.

생성된 프로젝트 구조는 위와 같다.
src는 프로젝트의 코드가 작성되는 main과 테스트 코드가 작성되는 test로 구분되며, main은 Java코드가 작성되는 java와 그 이외의 코드(정적파일, 템플릿)들이 작성되는 resources로 구분된다.
생성된 프로젝트의 build.gradle 파일을 보면 다음과 같은 코드가 작성되어 있다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.2'
id 'io.spring.dependency-management' version '1.1.6'
}
group = 'hello'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
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()
}
build.gradle파일이 프로젝트의 설정 파일인데 대충 설명하자면 Java 언어를 사용했고 각각 어떤 버전, 어떤 라이브러리를 사용하고 있다는게 작성되어 있다.
여기까지 진행하면서 Python Django 프로젝트를 진행할 때와 무언가 다른 이질감이 느껴졌는데
Python은 라이브러리를 사용하려면 직접 pip install 명령어를 사용해 다운로드 하는게 일상이었지만
Java Spring에서는 위의 repositories에 작성된 mavenCentral() 을 통해 필요한 라이브러리를 다운로드한다고 한다.
강의 영상의 마지막으로 HelloSpringApplication.java를 실행하고 localhost:8080에 접속해 Error Page가 출력되는 걸 확인 할 수 있었다.
