2021-03-29(Mon)

ํ•ญ๋ชฉ

๋‚ด์šฉ

ํ•™์Šต ๋‚ ์งœ

2021-03-29(์›”)

ํ•™์Šต ์‹œ๊ฐ„

11:00~23:00

ํ•™์Šต ๋ฒ”์œ„ ๋ฐ ์ฃผ์ œ

spring

ํ•™์Šต ๋ชฉํ‘œ

spring์„ ํ•™์Šตํ•˜์ž!

๋™๋ฃŒ ํ•™์Šต ๋ฐฉ๋ฒ•

-

์ƒ์„ธ ํ•™์Šต ๋‚ด์šฉ

http://start.spring.io ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•ด์„œ importํ•ด๋ฒ„๋ฆฌ์ž. ๋‹ค๋ฅธ๊ฑด ๋ชฐ๋ผ๋„ .gitignore ๊ฐ€ ๊น”๋”ํ•˜๊ฒŒ ์…‹ํŒ…๋˜๋Š” ๊ฒƒ์ด ์ฐธ ํŽธํ•˜๋‹ค.

Gradle

dependencies์— ๋ช…์‹œ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์˜์กดํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•จ๊ป˜ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค.

์Šคํ”„๋ง๋ถ€ํŠธ ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • spring-boot-start-web

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

      ์˜›๋‚ ์—๋Š” Tomcat WAS๋ฅผ ์ง์ ‘ ์„œ๋ฒ„์— ์„ค์น˜ํ•˜๊ณ  ์ž๋ฐ”์ฝ”๋“œ๋ฅผ ๋ฐ€์–ด๋„ฃ๋Š” ์‹์œผ๋กœ ๊ฐœ๋ฐœํ–ˆ์—ˆ๋‹ค. ์ด์ œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— WAS๋ฅผ ์ง์ ‘ ํฌํ•จ์‹œ์ผœ์„œ ๋นŒ๋“œํ•ด๋ฒ„๋ฆฐ๋‹ค.

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

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

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

    • spring-boot

      • spring-core

    • spring-boot-starter-logging

      • logback, slf4f

      ์‹ค๋ฌด์—์„œ๋Š” ๋กœ๊ฑฐ๋ฅผ ์จ์•ผํ•œ๋‹ค. spring-boot-starter์— logging ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋Š”๋ฐ, slf4j ์™€ logback-classic์„ ์—ฎ์–ด์„œ ์“ธ ์ˆ˜ ์žˆ๋„๋ก ์˜์กด์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ํฌํ•จ๋˜์–ด์žˆ๋‹ค.

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

  • spring-boot-starter-test

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

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

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

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

View์— ๋Œ€ํ•ด์„œ

Welcom page๋Š” ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ• ๊นŒ? ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” index.html ์„ ๋จผ์ € ์ฐพ๊ณ , ์—†์œผ๋ฉด index template๋ฅผ ์ฐพ๋Š”๋‹ค.

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

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

  • resources:templates/ +{ViewName}+ .html

์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ

์›น์„ ๊ฐœ๋ฐœํ•œ๋‹ค๋Š” ๊ฒƒ์€ ํฌ๊ฒŒ 3๊ฐ€์ง€๋ฅผ ๋œปํ•œ๋‹ค.

  1. ์ •์  ์ปจํ…์ธ 

  2. MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„

3. API

@ResponseBody ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์ปจํŠธ๋กค๋Ÿฌ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ์‹ธ๋ฉด, viewResolver ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฉ”์„œ๋“œ ๋ฆฌํ„ด ๊ฐ’์ด HttpMessageConverter๋กœ ๋ณ€ํ™˜๋˜์–ด ์‘๋‹ต ๋ฐ”๋””์— ์ €์žฅ๋œ๋‹ค. ์ด ๋•Œ 1) ์š”์ฒญ์˜ HTTP Accept ํ—ค๋”์™€ ์„œ๋ฒ„์˜ ์ปจํŠธ๋กค๋Ÿฌ ๋ฐ˜ํ™˜ ํƒ€์ž… ์ •๋ณด๋ฅผ ์กฐํ•ฉํ•˜์—ฌ HttpMessageConverter๊ฐ€ ์„ ํƒ๋œ๋‹ค.

  • ๋ณธ ๋ฌธ์ž์ฒ˜๋ฆฌ: StringHttpMessageConverter

  • ๊ธฐ๋ณธ ๊ฐ์ฒด์ฒ˜๋ฆฌ: MappingJackson2HttpMessageConverter

ํ•™์Šต ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ์ดํ‰

ํ  ์žฌ๋ฐŒ๊ธดํ•œ๋ฐ ๊ฐˆ๊ธธ์ด ๋ฉ€๋‹ค!

๋‹ค์Œ ํ•™์Šต ๊ณ„ํš

  • ๋””์ž์ธํŒจํ„ด ํ•™์Šต

Last updated