# 개발 환경 만들기
## 미션
---
스프링 부트 개발 환경을 만들고, "헬로 월드"를 출력하시오.
![스프링부트-입문-헬로-월드](http://drive.google.com/thumbnail?export=view&sz=w960&id=1NXQyCEgJBaDwC2RgYKIsfX9ewBUFLKxI)
## 개념
---
#### 스프링 부트 음식점을 창업하려면
요리에 필요한 가게를 준비해야한다. 크게 다음의 3가지가 필요하다.
![스프링부트-입문-jdk-ide-project](http://drive.google.com/thumbnail?export=view&sz=w960&id=1NYavGDESkAwO-nEDzWbuPOw99EsLIvNM)
- JDK: 자바 코드의 번역과 실행을 담당
- IDE: 개발 생산성을 높히는 프로그램(이클립스, 인텔리제이, STS, NetBeans, ...)
- 프로젝트: 실제 동작하는 코드 묶음
그럼 하나씩 개발 환경을 준비해보자.
![스프링부트-입문-개발-환경-만들기](http://drive.google.com/thumbnail?export=view&sz=w960&id=1NbbSRLp5612ywsTBFKkufb1Dgai_8VrQ)
## 실습
---
#### JDK 설치 for Windows
기존 JDK가 있는지 확인하자. 윈도우에서 명령 프롬프트를 실행한 뒤, `java -version`을 수행한다.
![스프링부트-입문-윈도우-JDK-설치-확인](http://drive.google.com/thumbnail?export=view&sz=w960&id=1N_QLuAlHhzooUDsDu3e6VVudKO7U4n0i)
설치된 JDK가 없는 것을 확인 후, "Adopt OpenJDK 8" 버전을 설치한다. 상황에 따라 다른 버전을 사용해도 되나, 되도록 LTS 버전을 추천한다. 2022.01.03 현재 17버전까지 나와있다. (다운로드 페이지: https://adoptium.net/)
![스프링부트-입문-jdk-다운로드](http://drive.google.com/thumbnail?export=view&sz=w960&id=1Nd0P4B7zz3SbBSpGs1YsOujBIP0CFUgz)
다운로드 완료 후, 설치를 진행한다. 설정값은 모두 기본 값으로 한다. 설치 완료 후 명령 프롬프트(cmd)를 재실행한 뒤, `java -version`을 입력하자. 설치 버전이 출력되면 성공이다.
![스프링부트-입문-jdk-설치-완료](http://drive.google.com/thumbnail?export=view&sz=w960&id=1NesOe7apui94m48vgnZYWbtYNRaU2793)
#### JDK 설치 for Mac
터미널 창에 `java -version`을 실행하여 JDK 설치 여부를 확인한다.
![스프링부트-입문-jdk-설치-확인-mac](http://drive.google.com/thumbnail?export=view&sz=w960&id=1NjJYQjnSEopeoe41vYPcXpAY_vMc0H_J)
설치된 JDK가 없다면, "Adopt JDK 8" 설치를 진행하자. 이를 위해, Homebrew를 먼저 설치한다. 해당 도구를 사용하면, 다양한 프로그램를 터미널 명령어로 설치할 수 있다. 구글링해서 알아서 잘 설치한다. (Homebrew 사이트: https://brew.sh/index_ko)
![](http://drive.google.com/thumbnail?export=view&sz=w960&id=1Nu7x-xbjt3sGns83CSjDXCvQwLsK6V6B)
Homebrew 설치 완료 후, 다음 명령어를 통해 "Adopt OpenJDK 8"을 설치한다.
![스프링부트-입문-homebrew를-통한-jdk-설치-맥](http://drive.google.com/thumbnail?export=view&sz=w960&id=1NvEkPwJ4aBWLqRbj7Af4ilUKJXqyc4CJ)
설치 완료 후, 다시 `java -version`을 입력한다. 설치 JDK의 버전이 출력되면 성공!
![스프링부트-입문-jdk-설치-확인-맥](http://drive.google.com/thumbnail?export=view&sz=w960&id=1NyCwREK6UrLWkPvRtYZvsPuBy7OxvCKd)
#### IDE 설치
"인텔리제이"를 구글링하여 다운로드 페이지(https://www.jetbrains.com/ko-kr/idea/download)로 이동한다.
![스프링부트-입문-인텔리제이-다운로드](http://drive.google.com/thumbnail?export=view&sz=w960&id=1O-jouWQCxHpCJcoAyb9-9eF4RXg9v1MT)
파일 다운로드 후, 설치를 진행한다. 되도록 기본 설정으로 진행한다. 설치 완료 후, "IntelliJ IDEA"를 실행하면 다음 창이 뜬다.
![스프링부트-입문-인텔리제이-IDE-실행](http://drive.google.com/thumbnail?export=view&sz=w960&id=1O-lk_ZsOpukKBL_CO-TO5JzjSFP6G3C0)
#### 프로젝트 만들기
스프링 부트 프로젝트는 https://start.spring.io 에서 생성한다. 왼쪽 영역에서 프로젝트 기본 설정을, 오른쪽 영역에서 필요한 라이브러리를 추가할 수 있다.
![스프링부트-입문-프로젝트-설정-및-생성](http://drive.google.com/thumbnail?export=view&sz=w960&id=1NU7gS_DLy-Iz_aBUuTk-lLN4CTHY4BmB)
설정을 마치고 하단 GENERATE 버튼을 클릭하면 프로젝트 파일이 받아진다. 다운로드 완료 후 압축을 푼 뒤, 인텔리제이로 프로젝트를 열자.
![스프링부트-입문-프로젝트-열기](http://drive.google.com/thumbnail?export=view&sz=w960&id=1O2kyep4zqkclbiPPM58U_eQFFU_QZu_k)
처음 프로젝트를 여는 경우, 상황에 따라 2~10분 가량 대기해야한다. 외부 라이브러리 다운로드 및 인덱싱 시간이 필요하기 때문.
![](http://drive.google.com/thumbnail?export=view&sz=w960&id=1O3ULq_kwdK9t_sjlXIghWt3LeiC9c2ue)
인덱싱 완료 후 스프링 부트를 실행하면, 스프링 부트 서버에 접속할 수 있다.
![스프링부트-입문-프로젝트-실행-메인-메소드](http://drive.google.com/thumbnail?export=view&sz=w960&id=1O4fs-nUWPJdWjzSXjqMWKCQ-iCHmjZau)
#### 헬로 월드!
"헬로 월드" 페이지를 보기 위해, `src/main/java/resources/hello.html` 파일을 만든다.
```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>헬로 월드!</h1>
</body>
</html>
```
서버를 재시작하고, 브라우저를 통해 localhost:8080/hello.html을 접속하자. "헬로 월드"가 나온다면 성공!
![스프링부트-입문-헬로-월드](http://drive.google.com/thumbnail?export=view&sz=w960&id=1NXQyCEgJBaDwC2RgYKIsfX9ewBUFLKxI)
#### build.gradle
Gradle로 작성된 스프링 부트 설정은 build.gradle 에 작성된다. 여기서 스프링 부트 및 JDK 버전이 지정된다. 자신의 개발환경에 맞게 값을 지정하면 된다.
```
plugins {
id 'org.springframework.boot' version '2.6.6' // 스프링 부트 버전(변경 가능)
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17' // JDK 버전(각자 설치된 자바 버전에 맞게 지정. Java 8은 1.8)
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-mustache'
implementation 'org.springframework.boot:spring-boot-starter-web'
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
```
## 🔥 구글링 훈련하기
---
다음 키워드를 구글링하여, 스스로 정리 및 문서화 하시오.
- 자바 JDK란
- 자바 maven gradle
- 이클립스 sts 인텔리제이