์คโฆ ์ด๊ฒ ๊ธฐ๋ณธ ์ต์ ์ด ์๋๊ตฌ๋
์ค๋ ๊น์ํ๋์ Spring Boot ์ ๋ฌธ ๊ฐ์๋ฅผ ๋ฃ๊ธฐ ์์ํ๋ค. ๊ต์ฅํ ๊ธฐ๋ณธ ์ธํ ์ ํ๊ณ , static index ํ์ด์ง๋ฅผ ์ก์์ฃผ๊ณ , ํ ํ๋ฆฟ ์์ง์ผ๋ก ๋์ ์ผ๋ก ์์ง์ด๋ ํ์ด์ง๋ฅผ ํ๋ ๋ง๋ค์๋ค. ๊ทธ๋ฐ๋ฐ ์ํ๋๊ป์ ๊ณ์ ํ๋ก์ ํธ๋ฅผ ๊ป๋ค ์ผ์ผํ๋ค๊ณ ํ์ จ๋ค. ๊ธฐ์กด์ React์ Hot Reload์ ๊ธธ๋ค์ฌ์ ธ๋ฒ๋ฆฐ ๋์๊ฒ ๊ต์ฅํ ๋ถํธํ๊ฒ ๋๊ปด์ก๋ค.
์ํ๋๊ป์ ๊ฐ์ ๋
ธํธ์ spring-boot-devtools
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ฉด ์๋ฒ ์ฌ์์ ์์ด ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํ ์ ์๋ค๊ณ ํ์
์ ๋ฐ๋ก ๊ฒ์ํด ๋ณด์๋ค.
์ผ๋จ ๊น์!
node์์ package.json
์ด ์๋ฏ, Spring Boot์์๋ ๋๊ฐ Gradle ์ด๋ผ๋ ๋น๋ ๊ด๋ฆฌ ์์คํ
์ ์ฌ์ฉํ๋ค. Spring Boot ํ๋ก์ ํธ ์ต์๋จ์ ์๋ build.gradle
์ dependencies
๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ๋ค.
dependencies {
// ... ๊ธฐ์กด ๋ํ๋์๋ค
// ์๋ ๋
์์ ์ถ๊ฐํด์ฃผ์!
developmentOnly("org.springframework.boot:spring-boot-devtools")
}
IntelliJ๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ํ์ผ์ ์์ ์ ๊ฐํ์ ๋ง์ Gradle Changes๋ฅผ ์ ์ฉํ ์ ์๋ ๋ฒํผ์ด ๋ํ๋๋ค.
๋์ ๋๋ฉด ๋ฐ๋ก ํด๋ฆญํ๋ฉด ๋๊ณ , ์๋๋ฉด Ctrl + Shift + O
๋ฅผ ํตํด์ Gradle์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํด์ค ์ ์๋ค.
IntelliJ์ ์ค์ ์ ๋ณ๊ฒฝํด์ฃผ์
์ด์ IntelliJ์ ์ค์ ์ ์ก์์ฃผ์ด์ผ ํ๋ค. ํ์คํ node ์ํ๊ณ์ ์กฐ๊ธ ๋ค๋ฅด๊ฒ IDE์ ํ๋ ์์ํฌ, ์ธ์ด๊ฐ ์ ๊ธฐ์ ์ผ๋ก ๋ถ์ด์ ์์ง์ธ๋ค๋ ๋๋์ด ๋ค์๋ค. (๊ทธ๋ฆฌ๊ณ VSCode๋ก Spring Boot ๊ฐ๋ฐ์ ํ๋ฉด ์ ๋ง ๋ง์ Configuration์ ํด์ผ ํ ๊ฒ ๊ฐ๋ค๋ ๋๋๋ ๋ค์๋ค)
- ์๋จ ๋ฉ๋ด์์ File - Settings(mac์์๋ Preference) ์ ์ด์ด์ค๋ค.
- ์ข์ธก ๋ฉ๋ด์์
Build, Execution, Deployment - Compiler
๋ก ๊ฐ๋ณด์. (Build, Execution, Deployment
๋ ํผ์น๊ธฐ ํ์ดํ,Compiler
๋ ๊ทธ๋ฅ ํด๋ฆญ) - ๊ทธ๋ฌ๋ฉด ์ฒดํฌ ๋ฉ๋ด๋ค ์ค์
Build Project automatically
๊ฐ ์๋ค. ์ด ๋ ์์ด ์๋ง ์ฒดํฌ ํด์ ๋์ด์์ ํ ๋ฐ, ์ฒดํฌ ํด์ฃผ์. - IntelliJ ๋ฒ์ ์ ๋ฐ๋ผ ๋ค๋ฅธ๋ฐ, ๋ด๊ฐ ์ฌ์ฉํ๋ ๋ฒ์ ์์๋ Settings ์ต์๋จ ๋ฉ๋ด์
Advanced Settings
๊ฐ ์๋ค. ๊ทธ ๊ณณ์ผ๋ก ๊ฐ๋ณด์. - ๊ทธ๋ฌ๋ฉด Compiler ๊ด๋ จ ํญ๋ชฉ์
Allow auto-make to start even if developed application is currently running
์ด ์๋ค. ์ด ๋ ์๋ ์ฒดํฌ ํด์ ๋์ด์์ ํ ๋ฐ, ์ฒดํฌ ํด์ฃผ์. - ๊ทธ๋ฆฌ๊ณ Settings ์์ OK ๋ฅผ ๋๋ฌ ์ ์ฅํ๊ณ ๋ซ์์ฃผ์.
์ผ๋จ ๋๋ค! ๊ทผ๋ฐโฆ ์๋ ์ด๋ฐ๊ฐ?
๊ทธ๋ฆฌ๊ณ ์ด ์ํ๋ก Spring Boot์์ ์ฌ์ฉํ๋ controller ๋ฑ์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์กฐ๊ธ ๊ธฐ๋ค๋ฆฌ๋ฉด ์์์ ์ฌ์์์ด ๋๋ค.
๊ทผ๋ฐโฆ ๊ฐ๊ฐํ๋ค! node๋ก ๊ฐ๋ฐํ ๋๋ ์ ์ฅ ๋๋ฅด๋ ์๊ฐ ํ๋ฆฌ๋ฆญ~ ๋ฟ
! ์ฌ์์์ด ๋๋๋ฐ, Spring์ ์ฝ๊ฐ์ ๋๋ ์ด๊ฐ ๊ฑธ๋ฆฐ๋ค. ์ด๋ด ๋ฐ์๋ ๊ทธ๋ฅ Shift + F10
์ ์
๋ ฅํด์ ํ๋ก์ ํธ๋ฅผ ์์ ์ฌ์์ํ๋๊ฒ ๋น ๋ฅด๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค ์ ๋์ด๋ค. ๊ตฌ๊ธ๋ง์ ํตํด ๋ค์์ ๊ธ์ ๋ฐ๊ฒฌํ๋ค.
Canโt get devtools auto build service working on Windowsโฆ
์ ๊ธ์ ๋ฐ๋ฅด๋ฉด, ๋ช ๊ฐ์ง์ IntelliJ ๋ ์ง์คํธ๋ฆฌ ์ค์ ์ ํตํด์ ์ง์ฐ์ ์ค์ผ ์ ์๋ค๊ณ ๋์ด์๋ค.
Ctrl + Shift + A
ํน์ ์๋จ์Help - Find Action
์ผ๋ก Action ์คํ ๊ฒ์์ฐฝ์ ์ด๊ณ , ๊ทธ ๊ณณ์Registry
๋ฅผ ๊ฒ์ํ์ฌ ์ด์ด์ฃผ์.- ๊ทธ๋ฆฌ๊ณ ๋ค์์ ์ค์ ๋ค์ ๋ณ๊ฒฝํด์ฃผ์.
- compiler.document.save.enabled - ๋ฌธ์(์ฝ๋)์ ๋ณ๊ฒฝ์ ๋ํด ํ๋ก์ ํธ๋ฅผ ์ ์ฅํ ์ง์ ๋ํ ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ค. ์ผ์ข ์ ์๋ ์ ์ฅ ์ต์ ์ด๋ค. ์ฒ์์๋ ํ์ฑํ ํด์ ์ฌ์ฉํ๋๋ฐ, ์๋ ์ค์ ๋ค์ ๋ง๋ฌผ๋ ค์ ๊ฐ์ ๋ก ์๋์ ์ฅ์ ๋งค์ฐ ๋นจ๋ฆฌ ํ๊ฒ ๋๊ณ , ์ค์ง์ ์ผ๋ก ์ฝ๋ฉ์ ํ ์๊ฐ ์์๋ค. ๊ทธ๋์ ์ฌ์ฉํ์ง ์๊ธฐ๋ก ํ๋ค. ์๋์ ์ค์ ๋ค์ ์ ์ดํดํ๊ณ ๊ณ์๋ค๋ฉด ์ผ๋ฌ๋ ๋ ๊ฒ ๊ฐ์ง๋ง ์ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด ๊ทธ๋ฅ ๋ ์ํ๋ก ์ฌ์ฉํ์.
- compiler.document.save.trigger.delay - ๋ฌธ์(์ฝ๋) ๋ณ๊ฒฝ์ ๋ํ ๋ฐ์์ผ๋ก ์ ์ฅ์ ํธ๋ฆฌ๊ฑฐํ๊ธฐ ์ ์ ์ง์ฐ ์๊ฐ(ms ๋จ์)์ด๋ค. ๋๋ 100์ผ๋ก ์ค์ ํ๋ค.
- compiler.automake.postpone.when.idle.less.than - Autobuild๊ฐ ์์ํ๋ ค๋ ์๊ฐ์ IntelliJ๊ฐ ์ง์ ๋ ๊ฐ(ms ๋จ์) ๋ฏธ๋ง์ ๊ฐ๊ฒฉ์ผ๋ก Idle ์ํ์ด๋ฉด ์ฌ์ฉ์์ ์์ ์ ๋ฐฉํดํ์ง ์๋๋ก Autobuild๋ฅผ ๋ฏธ๋ฃจ๋ ์ต์ ์ด๋ค. ๋น๋๊ฐ ์์ํ๋ ค๊ณ ํ๋๋ฐ ๋ด๊ฐ ์ฝ๋์ ๋ณ๊ฒฝ์ ๊ฐํ๋ค๋๊ฐ ํ ์ ์์ผ๋, ๊ทธ๋์์ ๋น๋๋ฅผ ๋ฏธ๋ฃจ๋ ๊ฒ. ์ด๊ฒ๋ 100์ผ๋ก ์ค์ ํ๋ค.
- compiler.automake.trigger.delay - ํ์ผ์์คํ ์ด๋ฒคํธ๊ฐ ์๊ธฐ๋ฉด Auto make๋ฅผ ์ผ๋ง๋ ๋ฏธ๋ฃฐ์ง์ ๋ํ ์ง์ฐ ์๊ฐ(ms ๋จ์) ์ด๊ฒ๋ 100์ผ๋ก ์ค์ ํ๋ค.
์ ์ฒ๋ผ ์ค์ ํด์ฃผ๋, ํ์คํ ๋ฐ์์๋๊ฐ ์กฐ๊ธ ๋นจ๋ผ์ง๊ธด ํ๋ค. ์์ ์ฆ๊ฐ์ ์ผ๋ก ๋ฐ์ํ์ง๋ ์๋๋ฐ, Spring Boot๊ฐ ์๋ก ๋น๋๋๋ฉด์ ์คํ๋์ด์ผ ํ๋ค ๋ณด๋, ์ด๋์ ๋์ ์ง์ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๋ฏ๋ ํ๋ค. ์์ธํ ์ด์ ๋ ๋ชจ๋ฅด๊ฒ ๋ค. (์ฌ์ค ์ด๊ฒ ๋๋ฌธ์ ์์ง๋ ์กฐ๊ธ ๊ฐ๊ฐํ๋ค)
ํ ํ๋ฆฟ๋ ๋ฐ๊พธ๋ฉด ๋ฐ์ โํด์คโ
์์ ์ค์ ์ ํ๋ฉด Controller์ ์ฝ๋๋ฅผ ๋ฐ๊ฟจ์ ๋๋ ์๋ ์ฌ์์์ด ๋๋ค. ๊ทธ๋ฐ๋ฐ Thymeleaf์ ๊ฐ์ ํ ํ๋ฆฟ ์์ง์ ์ฌ์ฉํ ๋ ํ ํ๋ฆฟ์ ๋ด์ฉ์ ๋ฐ๊พธ์ด๋ ์๋ฒ๊ฐ ์ฌ์์๋๊ฑฐ๋ ๋ฐ์์ด ๋์ง ์๋ ๊ฒ์ ๋ฐ๊ฒฌํ๋ค. ์ด๋ Spring ์ปจํ ์ด๋์์ viewResolver๊ฐ Resource์ธ ํ ํ๋ฆฟ์ ์ค์๊ฐ์ผ๋ก ์ฝ์ด์ค์ง ์๊ธฐ ๋๋ฌธ์ธ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค. (์ค๊ฐ๋ ์ผ ์ ์์ต๋๋ค. ํน์ ์ ์์๋ ๋ถ ์์ผ๋ฉด ์ง์ ํด์ฃผ์ธ์ ใ ใ ) ํ์คํ ๋ด์ฉ์ ์กฐ๊ธ ๋ ์คํฐ๋๋ฅผ ํด๋ด์ผ ํ ๊ฒ ๊ฐ๋ค. ์ผ๋จ ํด๊ฒฐ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ด๋ฏธ์ง ์์น์ ์๋ ๊ณณ์ ํด๋ฆญํ๋ค. ๊ทธ๋ฌ๋ฉด
Edit Configuration
์ด ๋์ค๋๋ฐ, ์ด๊ฒ์ ํด๋ฆญํ์ฌ ๋น๋ ์ค์ ์ ๋ณ๊ฒฝํด์ค ๊ฒ์ด๋ค.
Modify options
๋ฅผ ํด๋ฆญํ๊ณ ,On frame deactivation
์ ๋ค์ด๊ฐ์Update resources
๋ฅผ ์ ํํ๋ค.
์์ ๊ฐ์ด ์ค์ ์ ํ๋ฉด ์คํํ๊ณ ์๋ Spring Boot ์ดํ๋ฆฌ์ผ์ด์ ์ด ๋๊ธฐํ๊ณ ์๋ ๋์ ๋ณ๊ฒฝ์ฌํญ์ด ์์ ๊ฒฝ์ฐ resources๋ฅผ ์ ๋ฐ์ดํธ ํด์ค๋ค. ํ ํ๋ฆฟ ๋ด๋ถ์ ๋ด์ฉ์ ๋ณ๊ฒฝํ๋ฉด ์๋ฒ ์ฌ์์ ์์ด ์ ๊น์ ๋๊ธฐ ํ์ ๋ณ๊ฒฝ๋ด์ฉ์ด ๋ฐ์๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ฝ๊ฐ์ ๋ฌธ์
์๋ง๋ ๋ ์ง์คํธ๋ฆฌ ๊ฐ์ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋๋ฐ, ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์๋๋ฉด์ ์๋ฒ๊ฐ ๋ ๋ฒ ์ฌ์์ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์์ง์ ๋ ์ง์คํธ๋ฆฌ ๊ฐ์ ์ ๋๋ก ์ดํดํ๊ณ ์์ง ๋ชปํ๋, ์ถํ ์กฐ๊ธ ๋ ์์๋ด์ ๋ ์ง์คํธ๋ฆฌ ๊ฐ์ ์ค์ ์คํ์ ์ฐพ์๋ณด๋ ํธ์ด ์ข์ ๊ฒ ๊ฐ๋ค.
๋.