์Šคํ”„๋ง

๊ฐ์ฒด ์ง€ํ–ฅ ํŠน์ง• ์ถ”์ƒํ™” ์บก์Šํ™” ์ƒ์† ๋‹คํ˜•์„ฑ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ๋ช…๋ น์–ด ๋ชฉ๋ก์œผ๋กœ ๋ณด๋Š” ์‹œ๊ฐ์—์„œ ๋ฒ—์–ด๋‚˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ๋œ ๋‹จ์œ„, ์ฆ‰ "๊ฐ์ฒด"๋“ค์˜ ๋ชจ์ž„์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ. ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ (ํ˜‘๋ ฅ) ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ทœ๋ชจ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ๋งŽ์ด ์‚ฌ์šฉ๋จ. ์œ ์—ฐํ•˜๊ณ , ๋ณ€๊ฒฝ์ด ์šฉ์ด ? ๋ ˆ๊ณ  ๋ธ”๋Ÿญ ์กฐ๋ฆฝํ•˜๋“ฏ์ด ํ‚ค๋ณด๋“œ, ๋งˆ์šฐ์Šค ๊ฐˆ์•„ ๋ผ์šฐ๋“ฏ์ด ์ปดํ“จํ„ฐ ๋ถ€ํ’ˆ ๊ฐˆ์•„ ๋ผ์šฐ๋“ฏ์ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‰ฝ๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ๋‹คํ˜•์„ฑ ๋‹คํ˜•์„ฑ์˜ ์‹ค์„ธ๊ณ„ ๋น„์œ  ์‹ค์„ธ๊ณ„์™€ ๊ฐ์ฒด ์ง€ํ–ฅ์„ 1:1๋กœ ๋งค์นญ X ๊ทธ๋ž˜๋„ ์‹ค์„ธ๊ณ„์˜ ๋น„์œ ๋กœ ์ดํ•ดํ•˜๊ธฐ์—๋Š” ์ข‹์Œ ์—ญํ• ๊ณผ ๊ตฌํ˜„์œผ๋กœ ์„ธ์ƒ์„ ๊ตฌ๋ถ„ ์—ญํ• ๊ณผ ๊ตฌํ˜„์„ ๋ถ„..
์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ํ•ต์‹ฌ ๊ธฐ์ˆ  : ์Šคํ”„๋ง DI ์ปจํ…Œ์ด๋„ˆ, AOP, ์ด๋ฒคํŠธ, ๊ธฐํƒ€ ์›น ๊ธฐ์ˆ  : ์Šคํ”„๋ง MVC, ์Šคํ”„๋ง WebFlux ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ  : ํŠธ๋žœ์žญ์…˜, JDBC, ORM ์ง€์›, XML ์ง€์› ๊ธฐ์ˆ  ํ†ตํ•ฉ : ์บ์‹œ, ์ด๋ฉ”์ผ, ์›๊ฒฉ์ ‘๊ทผ, ์Šค์ผ€์ค„๋ง ํ…Œ์ŠคํŠธ : ์Šคํ”„๋ง ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ์ง€์› ์–ธ์–ด : ์ฝ”ํŠธ๋ฆฐ, ๊ทธ๋ฃจ๋น„ ์ตœ๊ทผ์—๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ํ†ตํ•ด์„œ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ธฐ์ˆ ๋“ค์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ ์Šคํ”„๋ง ๋ถ€ํŠธ ์Šคํ”„๋ง์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›, ์ตœ๊ทผ์—๋Š” ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉ ๋‹จ๋…์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ์ƒ์„ฑ Tomcat ๊ฐ™์€ ์›น ์„œ๋ฒ„๋ฅผ ๋‚ด์žฅํ•ด์„œ ๋ณ„๋„์˜ ์›น ์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ ๋จ ์†์‰ฌ์šด ๋นŒ๋“œ ๊ตฌ์„ฑ์„ ์œ„ํ•œ starter ์ข…์†์„ฑ ์ œ๊ณต ์Šคํ”„๋ง๊ณผ 3rd parth(์™ธ๋ถ€) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž๋™ ๊ตฌ์„ฑ ๋ฉ”ํŠธ๋ฆญ, ์ƒ..
API๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ด 3๊ฐœ์˜ ํด๋ž˜์Šค๊ฐ€ ํ•„์š” Request ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ DTO API ์š”์ฒญ์„ ๋ฐ›์„ Controller ํŠธ๋žœ์žญ์…˜, ๋„๋ฉ”์ธ ๊ธฐ๋Šฅ ๊ฐ„์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๋Š” Service โœ… ์—ฌ๊ธฐ์„œ ๋งŽ์€ ์˜คํ•ด → Service์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ But, ์ „ํ˜€ ๊ทธ๋ ‡์ง€ ์•Š์Œ โœ… Service๋Š” ํŠธ๋žœ์žญ์…˜, ๋„๋ฉ”์ธ ๊ฐ„ ์ˆœ์„œ ๋ณด์žฅ์˜ ์—ญํ• ๋งŒ ํ•จ Web Layer ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ(@Controller)์™€ JSP/Freemarker ๋“ฑ์˜ ๋ทฐ ํ…œํ”Œ๋ฆฟ ์˜์—ญ ์ด์™ธ์—๋„ ํ•„ํ„ฐ(@Filter), ์ธํ„ฐ์…‰ํ„ฐ, ์ปจํŠธ๋กค๋Ÿฌ ์–ด๋“œ๋ฐ”์ด์Šค(@ControllerAdvice)๋“ฑ ์™ธ๋ถ€ ์š”์ฒญ๊ณผ ์‘๋‹ต์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ์˜์—ญ Service Layer @Service์— ์‚ฌ์šฉ๋˜๋Š” ์„œ๋น„์Šค ์˜์—ญ ์ผ๋ฐ˜์ ์œผ๋กœ Controller์™€ Dao ์ค‘๊ฐ„ ..
MyBatis ์‹ค์ œ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ์‹œ๊ฐ„ ๋ณด๋‹ค SQL ์„ ๋‹ค๋ฃจ๋Š” ์‹œ๊ฐ„์ด ๋” ๋งŽ์•˜์Œ ๊ฐ์ฒด ๋ชจ๋ธ๋ง๋ณด๋‹ค๋Š” ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์—๋งŒ ์ง‘์ค‘ํ•˜๊ณ , ๊ฐ์ฒด๋ฅผ ๋‹จ์ˆœํžˆ ํ…Œ์ด๋ธ”์— ๋งž์ถ”์–ด ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์—ญํ• ๋งŒ ํ•˜๋Š” ๊ฐœ๋ฐœ์„ ํ•˜๊ฒŒ ๋จ MyBatis๋Š” ORM์ด ์•„๋‹˜. SQL Mapper์ด๋‹ค. ORM์€ ๊ฐ์ฒด๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๊ฒƒ์ด๊ณ , SQL Mapper๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋งคํ•‘ JPA ํ˜„๋Œ€์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDB, Relational Database)๋Š” ๋น ์งˆ ์ˆ˜ ์—†๋Š” ์š”์†Œ ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ๊ฐ์ฒด๋ฅผ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡๋ณด๋‹ค ์ค‘์š” ํ˜„์—… ํ”„๋กœ์ ํŠธ ๋Œ€๋ถ€๋ถ„์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ณด๋‹ค SQL๋กœ ๊ฐ€๋“ํ•˜๊ฒŒ ๋œ ๊ฒƒ ์ด๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ SQL๋งŒ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ, SQL๋กœ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ˆ ๊ฐ ํ…Œ์ด๋ธ”๋งˆ๋‹ค ๊ธฐ๋ณธ์ž‘์ธ CRUD(Create, ..
ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์†Œ๊ฐœ TDD์™€ Unit Test(๋‹จ์œ„ ํ…Œ์ŠคํŠธ)๋Š” ๋‹ค๋ฆ„ TDD : ํ…Œ์ŠคํŠธ๊ฐ€ ์ฃผ๋„ํ•˜๋Š” ๊ฐœ๋ฐœ → ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ ํ•ญ์ƒ ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๊ณ  (Red) ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜๋Š” ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  (Green) ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜๋ฉด ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋ง (Refactoring) ๋ฐ˜๋ฉด ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” TDD์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์ธ ๊ธฐ๋Šฅ ๋‹จ์œ„์˜ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ ๐Ÿ‘‰ ์ˆœ์ˆ˜ํ•˜๊ฒŒ ํ…Œ์ŠคํŠธ๋งŒ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ
Junit 5 Annotation Junit5์—์„œ ์ œ๊ณตํ•˜๋Š” org.junit.jupiter.api ํŒจํ‚ค์ง€ ๋‚ด์˜ ์–ด๋…ธํ…Œ์ด์…˜ @Test ํ•ด๋‹น ์–ด๋…ธํ…Œ์ด์…˜์„ ๋‹ฌ์•„๋‘” ๋ฉ”์„œ๋“œ๊ฐ€ ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ์ž„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. @BeforeEach ๊ฐ๊ฐ์˜ @Test, @RepeatedTest, @ParameterizedTest, @TestFactory ์ „์— ์‹คํ–‰๋จ @AfterEach ๊ฐ๊ฐ์˜ @Test, @RepeatedTest, @ParameterizedTest, @TestFactory ํ›„์— ์‹คํ–‰๋จ @BeforeAll ๋ชจ๋“  @Test, @RepeatedTest, @ParameterizedTest, @TestFactory ์ „์— ์‹คํ–‰๋จ @AfterAll ๋ชจ๋“  @Test, @RepeatedTest, @ParameterizedTest, @Te..
โ€ผ๏ธ 1.4์ผ ์‹œ์ž‘ โ€ผ๏ธ View ํ™˜๊ฒฝ ์„ค์ • static/index.html ์„ ๋จผ์ € ์ฐพ์•„ Welcome Page ๊ธฐ๋Šฅ์„ ์ œ๊ณต ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋ฆฌํ„ด ๊ฐ’์œผ๋กœ ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ทฐ ๋ฆฌ์กธ๋ฒ„ (viewResolver) ๊ฐ€ ํ™”๋ฉด์„ ์ฐพ์•„์„œ ์ฒ˜๋ฆฌ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ…œํ”Œ๋ฆฟ์—”์ง„ ๊ธฐ๋ณธ viewName ๋งคํ•‘ resources:templates/ + {viewName} + .html ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ 1. ์ •์  ์ปจํ…์ธ  2. MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„ MVC : Model, View, Controller Spring MVC ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค, ๋ฐ์ดํ„ฐ ๋ฐ ๋…ผ๋ฆฌ ์ œ์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ํ™”๋ฉด์„ ๊ตฌ๋ถ„ํ•˜๋Š”๋ฐ ์ค‘์ ์„ ๋‘  ๊ฐ„๋‹จํ•˜๊ฒŒ Model, VIew, Controller๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋Š”..
KIMHYEYUN
'์Šคํ”„๋ง' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (5 Page)