๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[๊น€์˜ํ•œ] ์Šคํ”„๋ง ์ž…๋ฌธ - ์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ, ์›น MVC, DB ์ ‘๊ทผ ๊ธฐ์ˆ  (์„น์…˜1. ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ์„ค์ •) ํ•„๊ธฐ

by coderSohyun 2022. 3. 20.

1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ 

Java11 (ํ˜„์žฌ Java17 ์‚ฌ์šฉ ์ค‘) ์„ค์น˜

IntelliJ (Eclipse) ์„ค์น˜

 

* ์Šคํ”„๋ง๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•ด์„œ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ *

https://start.spring.io (์Šคํ”„๋ง ์ด๋‹ˆ์…œ๋ผ์ด์ €๋กœ ์ด๋™)

 

์Šคํ”„๋ง ๋ถ€ํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์‚ฌ์ดํŠธ์ž„. ์Šคํ”„๋ง์—์„œ ์šด์˜.

Maven / Gradle ) ์ด๊ฒƒ๋“ค์ด ๋ฌด์—‡์ด๋ƒ๋ฉด! ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋•ก๊ฒจ์„œ ์˜ค๊ณ  ์ด๊ฒƒ๋“ค์ด ๋นŒ๋“œ๋ฅผ ํ•˜๋Š” ๋ผ์ดํ”„ ์‚ฌ์ดํด๋“ค๊นŒ์ง€ ์ „๋ถ€ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ํˆด์ž„. ๊ณผ๊ฑฐ์—๋Š” Maven์„ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ์œผ๋‚˜ ์ตœ๊ทผ์—๋Š” Gradle์„ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. ๋”ฐ๋ผ์„œ Gradle ์ถ”์ฒœํ•จ. 

Dependencies๋ž€ ์Šคํ”„๋ง๋ถ€ํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๊ฑด๋ฐ ์–ด๋–ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๋•ก๊ฒจ์„œ ์“ธ ๊ฒƒ์ด๋ƒ (๊ตฌ์ฒดํ™”ํ•˜๊ธฐ)

 

<ํŒŒ์ผ๋“ค ์‚ดํŽด๋ณด๊ธฐ>

.idea๋Š” ์ธํ…”๋ฆฌ์ œ์ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์„ค์ • ํŒŒ์ผ

gradle์€ gradle์ด ์‚ฌ์šฉํ•˜๋Š” ํด๋”

src main test ๊ธฐ๋ณธ ํด๋”๋กœ ๋‚˜๋ˆ ์ ธ ์žˆ์Œ. ์š”์ฆ˜ ๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œ์—์„œ๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•จ. 

main ๋ฐ‘์— resources ํด๋”๋Š” ์‹ค์ œ ์ž๋ฐ” ์ฝ”๋“œ๋“ค์„ ์ œ์™ธํ•œ xml์ด๋‚˜ properties์™€ ๊ฐ™์€ ์„ค์ • ํŒŒ์ผ์ด ๋“ค์–ด๊ฐ„๋‹ค. (์ž๋ฐ” ํŒŒ์ผ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ํŒŒ์ผ)

- build.gradle 

plugins => ์•„๊นŒ ์„ ํƒํ–ˆ๋˜ ๋ฒ„์ „๋“ค, ์ž๋ฐ” ์–ธ์–ด ์„ ํƒํ•œ ๊ฒƒ๋“ค 

group version sourceCompatibility (์ž๋ฐ” 11 ๋ฒ„์ „)

dependencies ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค ์žˆ์Œ

์•„๊นŒ implementํ–ˆ๋˜ thymleaf์™€ web๋“ค์ด ์žˆ์Œ.

testimplementation์€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค ์˜๋ฏธํ•จ. junit5๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ด. 

testImplementation('org.springframework.boot:spring-boot-starter-test') {

exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' }

๊ทธ๋Ÿฌ๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์–ด๋””์—์„ ๊ฐ€ ๊ฐ€์ ธ์™€์•ผ๋˜๋Š”๋ฐ ๊ทธ๊ฒƒ์„ repositories mavenCentral()์ด๋ผ๋Š” ์‚ฌ์ดํŠธ์—์„œ ๊ฐ€์ ธ์™€๋ผ๋ผ๊ณ  ๊ฐ„ํŽธํ•˜๊ฒŒ ์„ค์ •ํ•ด๋‘” ๊ฒƒ์ž„. ํ•„์š”ํ•˜๋‹ค๋ฉด ํŠน์ • ์‚ฌ์ดํŠธ์˜ URL์„ ๊ธฐ์ž…ํ•  ์ˆ˜ ์žˆ์Œ. 

* ์ง€๊ธˆ์€ gradle์— ๋Œ€ํ•ด์„œ ๋„ˆ๋ฌด ์‹ฌ๋„ ๊นŠ๊ฒŒ ๊ณต๋ถ€ํ•  ํ•„์š” ์—†์Œ! gradle์€ ๋ฒ„์ „ ์„ค์ •ํ•˜๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๋•ก๊ฒจ์˜ค๋Š” ๊ตฌ๋‚˜ ์ •๋„๋กœ๋งŒ ์ดํ•ดํ•ด์ฃผ๋ฉด ๋จ!

.gitignore์€ ๊นƒ์—์„œ ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค๋งŒ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ํŒŒ์ผ 

gradlew gradlew.bat (๋’ค์— gradle ๋นŒ๋“œํ•  ๋•Œ ๋ณด์—ฌ์ฃผ์‹ ๋‹ค๊ณ  ํ•จ)

setting.gradle (๋‚˜์ค‘์— ๊ณต๋ถ€ํ•  ๊ฒƒ// ๋ณ„๋กœ ์•ˆ ์ค‘์š”ํ•จ) 

 

SpringBasicApplication ๋“ค์–ด๊ฐ€๋ณด๋ฉด ํด๋ž˜์Šค๊ฐ€ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ ธ ์žˆ๊ณ  ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ SpringBootApplication์ด ๋“ค์–ด์™€ ์žˆ๋Š” ๊ฒƒ ํ™•์ธ ๊ฐ€๋Šฅํ•จ. (์•— ๋ญ”๊ฐ€ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™๊ตฐ!) ๋ฐ”๋กœ main ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋จ.

Tomcat started on port(s): 8080 (http) with context path '' : ์ผ๋‹จ์€ ๋ญ”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ http๋กœ 8080ํฌํŠธ๊ฐ€ ๋œธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ. ๋”ฐ๋ผ์„œ ์›น ๋ธŒ๋ผ์šฐ์ ธ๋ฅผ ์—ด์–ด์„œ localhost:8080 ๋“ค์–ด๊ฐ€๋ฉด error ํŽ˜์ด์ง€๊ฐ€ ๋œจ๋Š”๋ฐ ๊ทธ๋Ÿฌ๋ฉด ์ผ๋‹จ์€ ์Šคํ”„๋ง์ด ์ž‘๋™ ๋๋‹ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์„ฑ๊ณต ์˜๋ฏธํ•จ! (ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ์„ค์ • ์„ฑ๊ณตํ•จ!) 

์ด ์ฝ”๋“œ๋“ค์„ ๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ์ž‘์„ฑ๋งŒ ํ•˜๋ฉด ์Šคํ”„๋ง๋ถ€ํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰์ด ๋˜๋Š” ๊ฒƒ์ž„! ํ†ฐ์บฃ์ด๋ผ๋Š” ์›น ์„œ๋ฒ„๋ฅผ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์Œ. 

๋ฒˆ์™ธ๋กœ Preference๋“ค์–ด๊ฐ€๋ฉด gradle์ด๋ผ๊ณ  ๊ฒ€์ƒ‰์„ ํ•˜๊ณ  build and run using์ด๋ž‘ run tests using์„ ์ธํ…”๋ฆฌ์ œ์ด๋กœ ์‹คํ–‰์ด ๋˜๋Š” ๊ฒƒ์ž„. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด gradle์„ ๋“ค๋ฆฌ์ง€ ์•Š์•„์„œ ํ›จ์”ฌ ๋” ๋น ๋ฅด๊ฒŒ ์ ‘์†์ด ๋จ. 

 

 

2. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ดํŽด๋ณด๊ธฐ 

build.gradle ๋“ค์–ด๊ฐ€์„œ ๋ณด๋ฉด thymeleaf, web, test 3๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ–์— ์—†์Œ.

external libraries ๊ฐ€๋ณด๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—„์ฒญ ๋งŽ์Œ. junit, tomcat, apeache, spring ๋“ฑ๋“ฑ ์—„์ฒญ ๋งŽ์Œ. 

gradle์ด๋‚˜ maven ๊ฐ™์€ ํˆด๋“ค์€ ์˜์กด๊ด€๊ณ„๋ฅผ ์ „๋ถ€ ๊ด€๋ฆฌํ•ด์คŒ.

์˜ˆ๋ฅผ ๋“ค์–ด์„œ starter-web ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋•ก๊ธฐ๊ฒŒ ๋˜๋ฉด starter-web์ด ํ•„์š”ํ•œ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค(์˜์กด๊ด€๊ณ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค)์„ ์ „๋ถ€ ๊ฐ€์ ธ์™€์คŒ. ๊ทธ๋ž˜์„œ ์„œ๋กœ ์˜์กด๊ด€๊ณ„๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” starter-web๋งŒ ํ•„์š”ํ•˜์ง€๋งŒ ์ด ๊ฒƒ์„ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ํ•„์š”ํ•จ. ๊ทธ๋ž˜์„œ gradle์€ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์ „๋ถ€ ๋•ก๊ฒจ์˜ค๊ฒŒ ๋จ. ๋‚˜์ค‘์— spring-core๊นŒ์ง€ ๋•ก๊ฒจ ์˜ค๊ฒŒ ๋จ. 

gradle ์˜†์— ์žˆ๋Š” ๊ฑฐ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด dependencies๋ผ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค ๊ฐ„์˜ ์˜์กด๊ด€๊ณ„๋ฅผ ์˜๋ฏธํ•จ.

(*) ์žˆ๋Š” ๊ฒƒ๋“ค์€ ์œ„์— ์ด๋ฏธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ค‘๋ณต ์ œ๊ฑฐ์šฉ์œผ๋กœ ๋‹ค์‹œ ์“ฐ์ง€ ์•Š๊ณ  ๋’ค์— ๋ณ„์„ ๋ถ™์—ฌ์ค€๋‹ค. 

spring-boot-starter๋“ค์–ด๊ฐ€๋ณด๋ฉด tomcat์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์›น์„œ๋ฒ„๋ฅผ ๋”ฐ๋กœ ์„ค์ •ํ•  ํ•„์š” ์—†์ด, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•ด์„œ ์›น ์„œ๋ฒ„์— ์˜ฌ๋ฆฌ๋ฉด ๋๋‚˜๋Š” ๊ฒƒ์ž„! (์—„์ฒญ ํŽธ๋ฆฌํ•ด์ง!) ์˜ˆ์ „์ฒ˜๋Ÿผ ํ†ฐ์บฃ ์„œ๋ฒ„๋ฅผ ๊น”๊ณ  ํ•˜๋Š” ๋“ฑ์˜ ์ผ์€ ํ•˜์ง€ ์•Š์Œ! ์‹œ๋Œ€ ๋งŽ์ด ๋ฐ”๋€œใ…Žใ…Ž 

spring-boot-starter์— ๋“ค์–ด๊ฐ€๋ณด๋ฉด spring-boot-autoconfigure, spring-boot-dependencies, spring-boot-starter, spring-core ๋“ฑ์ด ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. spring-boot ์™€ ๊ด€๋ จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ฐ๋ฉด spring๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๊ฐ€์ ธ์™€์„œ ์“ด๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ. spring-boot-starter-logging : slf4j๋ž‘ logback์ด๋ผ๋Š” ๊ฒƒ์ด ์žˆ์Œ. ์š”์ฆ˜์—๋Š” logback์„ ๋งŽ์ด ์‚ฌ์šฉํ•จ. 

thymeleaf ๋ฐ‘์—๋Š” ๋˜ thymleaf์™€ ๊ด€๋ จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ.

 

testImplementation ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 

junit์ด๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•จ. junit5๋ฒ„์ „์„ ์š”์ฆ˜์—๋Š” ๋งŽ์ด ์‚ฌ์šฉํ•จ. 

assertj ๋“ฑ์€ ํ…Œ์ŠคํŠธ๋ฅผ ๋” ์‰ฝ๊ณ  ์›ํ™œํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” 

spring-test ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” spring๊ณผ ํ†ตํ•ฉํ•ด์„œ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž„. 

 

ํ•ต์‹ฌ 

spring-boot-starter-web

- spring-boot-starter-tomcat : ํ†ฐ์บฃ(์›น์„œ๋ฒ„)

- spring-webmvc : ์Šคํ”„๋ง ์›น MVC

spring-boot-starter-thymeleaf : ํƒ€์ž„๋ฆฌํ”„ ํ…œํ”Œ๋ฆฟ ์—”์ง„(View)

spring-boot-starter(๊ณตํ†ต) : ์Šคํ”„๋ง ๋ถ€ํŠธ + ์Šคํ”„๋ง ์ฝ”์–ด + ๋กœ๊น…

- spring-boot

   - spring-core

- spring-boot-starter-logging

   - logback, slf4j

ํ…Œ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

spring-boot-starter-test

- junit : ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ

- mockito : ๋ชฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

- assertj : ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ข€ ๋” ํŽธํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ฒŒ ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

- spring-test : ์Šคํ”„๋ง ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ง€์›

 

 

3. View ํ™˜๊ฒฝ์„ค์ •

Welcome Page ๋งŒ๋“ค๊ธฐ

resource ํŒŒ์ผ์— static ์•„๋ž˜์— file ์ƒˆ๋กœ ์ƒ์„ฑํ•ด์„œ index.html ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ 

spring.io์— ๋“ค์–ด๊ฐ€์„œ project์— springboot ์žˆ์Œ learn ๋“ค์–ด๊ฐ€์„œ referencedoc ๋“ค์–ด๊ฐ€์„œ spring boot features ์—์„œ welcome page์— ๋“ค์–ด๊ฐ€์„œ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ๋‹ค ์„ค๋ช…์ด ๋‚˜์™€์žˆ์Œ. ๊ทธ๊ฑฐ ๋ณด๊ณ  ํ•˜๋ฉด ๋จ. spring์€ ๋„ˆ๋ฌด๋‚˜ ํฐ ์ƒํƒœ๊ณ„์ด๊ธฐ ๋•Œ๋ฌธ์— ์ „๋ถ€ ๋‹ค ๊ณต๋ถ€ํ•  ์ˆ˜๋Š” ์—†๊ณ  ๋”ฐ๋ผ์„œ ํ•„์š”ํ•œ ๊ฒƒ์„ ์ œ๋Œ€๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์ด ๋งค์šฐ ์ค‘์š”ํ•จ. ๋”ฐ๋ผ์„œ ์ด ๋ฉ”๋‰ด์–ผ์—์„œ ๊ฒ€์ƒ‰์„ ์ž˜ ํ•ด์„œ ํ•„์š”ํ•œ ์ •๋ณด ์ฐพ๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ๋จ.

๋ฐฉ๊ธˆํ•œ ๊ฒƒ์€ ์ •์  ํŽ˜์ด์ง€์ž„. 

ํ•˜์ง€๋งŒ thymeleaf๋ผ๋Š” ํ…œํ”Œ๋ฆฟ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋ฉด 

๊ณต์‹ ์‚ฌ์ดํŠธ thymeleaf.org ์—์„œ ๋ช‡๊ฐ€์ง€ ํŠน์ง•๋“ค์ด ์žˆ์Œ (์•Œ์•„์„œ ์ฝ๊ธฐ) 

์Šคํ”„๋ง ๊ณต์‹ ํŠœํ† ๋ฆฌ์–ผ 

์Šคํ”ผ๋ง๋ถ€ํŠธ ๋ฉ”๋‰ด์–ผ template engines ์—์„œ spring boot์˜ auto-configuration์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ๋“ค์„ ์ œ๊ณตํ•ด์ค€๋‹ค. freemarker, groovy, thymeleaf, mustache

 

web ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ฒซ ์ง„์ž… ์ ์ด ์ปจํŠธ๋กค๋Ÿฌ์ž„. 

 

localhost:8080/hello๋ฅผ ๋“ค์–ด๊ฐ€๋ฉด ์Šคํ”„๋ง๋ถ€ํŠธ๋Š” ํ†ฐ์บฃ์ด๋ผ๋Š” ์›น์„œ๋ฒ„๋ฅผ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์Œ. ๊ทธ๋Ÿฌ๋ฉด ์Šคํ”„๋งํ•œํ…Œ ํ†ฐ์บฃ์ด ๋ฌผ์–ด๋ด„. helloController์— GetMapping (Get : HTTP) ์— hello๋ผ๋Š” url๊ณผ ๋งค์นญ์ด ๋˜์–ด์„œ. ๋ฉ”์†Œ๋“œ ์‹คํ–‰์ด ๋˜๋Š”๋ฐ, model์— ํ‚ค๋Š” data๊ณ  ๊ฐ’์€ hello!! ์ž„. return์„ hello๋กœ ํ•จ. ๊ทธ ์–˜๊ธฐ๋Š” ์ฆ‰, hello.htmlํ•œํ…Œ ๊ฐ€์„œ ๋žœ๋”๋งํ•ด๋ผ. ์ด ํ™”๋ฉด์„ ์‹คํ–‰์‹œ์ผœ๋ผ.  templates ํด๋”์— ์žˆ๋Š” hello.html์„ ์Šคํ”„๋ง์ด ์ฐพ์•„์„œ thymeleaf ํ…œํ”Œ๋ฆฟ ์—”์ง„ ์ฒ˜๋ฆฌ

 

์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋ฆฌํ„ด ๊ฐ’์œผ๋กœ ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ทฐ ๋ฆฌ์กธ๋ฒ„ (viewResolver)๊ฐ€ ํ™”๋ฉด์„ ์ฐพ์•„์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.

- ์Šคํ”„๋ง ๋ถ€ํŠธ ํ…œํ”Œ๋ฆฟ์—”์ง„ ๊ธฐ๋ณธ viewName ๋งคํ•‘

- resources:templates/ + (ViewName) + .html

 

์ฐธ๊ณ  : spring-boot-devtools ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด, 'html'ํŒŒ์ผ์„ ์ปดํŒŒ์ผ๋งŒ ํ•ด์ฃผ๋ฉด ์„œ๋ฒ„ ์žฌ์‹œ์ž‘ ์—†์ด View ํŒŒ์ผ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

4. ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ (๋‹ค์‹œ ๋ณด๋ฉด์„œ ์ •๋ฆฌํ•˜๊ธฐ / 3๋ถ„์งœ๋ฆฌ)