๐Ÿ“ Language/โœ JAVA

    [Spring][ํ˜ผ๊ณต] 4. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - (3) ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ

    [Spring][ํ˜ผ๊ณต] 4. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - (3) ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ

    ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ 3. ํšŒ์› ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ ๊ฐœ๋ฐœํ•œ ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•ด์„œ ํ…Œ์ŠคํŠธํ•  ๋•Œ ์ž๋ฐ”์˜ main ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ด์„œ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ ์ค€๋น„ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š”๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ , ๋ฐ˜๋ณต ์‹คํ–‰ํ•˜๊ธฐ ์–ด๋ ต๊ณ  ์—ฌ๋Ÿฌ ํ…Œ์ŠคํŠธ๋ฅผ ํ•œ ๋ฒˆ์— ์‹คํ–‰ํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ์ž๋ฐ”๋Š” JUnit ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•ด์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•œ ํ›„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ์‹์„ ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ(TDD)์ด๋ผ ํ•œ๋‹ค. 1) ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ ๋ณดํ†ต ํ…Œ์ŠคํŠธํ•  ๊ธฐ๋Šฅ๊ณผ ๋™์ผํ•œ ํŒจํ‚ค์ง€ ์ด๋ฆ„์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  class๋Š” ๋’ค์— Test๋ฅผ ๋ถ™์ธ๋‹ค. @Test๋Š” ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ๋ผ๋Š” ๋œป์œผ๋กœ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ๋‹จ๋… ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ..

    [Spring][ํ˜ผ๊ณต] 4. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - (2) ํšŒ์› ๋„๋ฉ”์ธ๊ณผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ

    [Spring][ํ˜ผ๊ณต] 4. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - (2) ํšŒ์› ๋„๋ฉ”์ธ๊ณผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ

    ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ 2. ํšŒ์› ๋„๋ฉ”์ธ๊ณผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ 1) ํšŒ์› ๋„๋ฉ”์ธ ๋งŒ๋“ค๊ธฐ damain ํŒจํ‚ค์ง€ ์ƒ์„ฑ Member ํด๋ž˜์Šค ์ƒ์„ฑ: ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ์ดํ„ฐ ์ •์˜ํ•œ๋‹ค. package hello.hello.spring.domain; public class Member { private Long id; // ์‹œ์Šคํ…œ์ด ์ €์žฅํ•œ ์ž„์˜์˜ ๊ฐ’ private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 2) ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ reposi..

    [Spring][ํ˜ผ๊ณต] 4. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - (1) ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ ์ •๋ฆฌ

    [Spring][ํ˜ผ๊ณต] 4. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - (1) ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ ์ •๋ฆฌ

    ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ 1. ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ ์ •๋ฆฌ 1) ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ์ดํ„ฐ: ํšŒ์› ID, ์ด๋ฆ„ ๊ธฐ๋Šฅ: ํšŒ์› ๋“ฑ๋ก, ์กฐํšŒ ๊ฐ€์ƒ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ์•„์ง ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๊ฐ€ ์„ ์ •๋˜์ง€ ์•Š์•˜๋‹ค. 2) ์ผ๋ฐ˜์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ๊ตฌ์กฐ ์ปจํŠธ๋กค๋Ÿฌ: ์›น MVC์˜ ์ปจํŠธ๋กค๋Ÿฌ ์—ญํ• ์ด๋‹ค. ์„œ๋น„์Šค: ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค. Ex) ํšŒ์›์€ ์ค‘๋ณต ๊ฐ€์ž…์ด ์•ˆ๋œ๋‹ค. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ: DB์— ์ ‘๊ทผ ๋ฐ ๋„๋ฉ”์ธ ๊ฐ์ฒด๋ฅผ DB์— ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค. ๋„๋ฉ”์ธ: ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ ๊ฐ์ฒด์ด๋‹ค. Ex) ์ฃผ๋กœ DB์— ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌ๋˜๋Š” ํšŒ์›, ์ฃผ๋ฌธ, ์ฟ ํฐ ๋“ฑ 3) ํด๋ž˜์Šค ์˜์กด ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋Š” RDB, NoSQL ๋“ฑ ๋‹ค์–‘ํ•œ ์ €์žฅ์†Œ๋ฅผ ๊ณ ๋ฏผ ์ค‘์ด๋ฉฐ ์•„์ง ์„ ์ •๋˜์ง€ ์•Š์•˜๋‹ค. ์šฐ์„  ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ๋‚˜์ค‘์— ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ•œ๋‹ค. ๊ฐœ๋ฐœ ์ง„ํ–‰์„ ์œ„ํ•ด ์ดˆ๊ธฐ ๊ฐœ..

    [Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - API (3)

    [Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - API (3)

    ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ 3. API MVC๋Š” ๋ณ€ํ™˜๋œ html์„ ์›น ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์ด๊ณ  (xml) API๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ ๊ทธ๋Œ€๋กœ ๋‚ด๋ ค์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค. (json) 1) ๋ฌธ์ž ๋ฐ˜ํ™˜ Controller ๊ธฐ์กด์— ๊ตฌํ˜„ํ•œ HelloController ์•ˆ์— ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๋‹ค. viewResolver๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  HTTP์˜ ์‘๋‹ต body์— ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๋ฐ˜ํ™˜ํ•  ๊ฒƒ์ด๋‹ค. (@ResponseBody) @GetMapping("hello-string") @ResponseBody public String helloString(@RequestParam("name") String name) { return "hello " + name; } ์‹คํ–‰ ํ™”๋ฉด ์ด์ „์— ์ž‘์—…ํ–ˆ๋˜ MVC ๋ฐฉ์‹๊ณผ ๋ณ„ ์ฐจ์ด๊ฐ€ ์—†์–ด ๋ณด์ธ๋‹ค. ํ•˜..

    [Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„ (2)

    [Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„ (2)

    ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ 2. MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„ MVC๋ž€ Model, View, Controller๋ฅผ ๋งํ•œ๋‹ค. ๊ณผ๊ฑฐ์—๋Š” Controller์™€ View๊ฐ€ ๋”ฐ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์ง€ ์•Š์•˜๊ณ  View์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค ์ฒ˜๋ฆฌํ–ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์„ ๋ชจ๋ธ 1 ๊ตฌ์กฐ๋ผ๊ณ  ํ•˜๊ณ  JSP์—์„œ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ ๊ด€์‹ฌ์‚ฌ๋‚˜ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. View๋Š” ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š”๋ฐ ์ง‘์ค‘ํ•ด์•ผ ํ•˜๊ณ  Controller๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด๋‚˜ ์„œ๋ฒ„๋‚˜ ๋‚ด๋ถ€์ ์ธ ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์ง‘์ค‘ํ•ด์•ผ ํ•˜๊ณ  Model์€ ํ™”๋ฉด์—์„œ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ์ €์žฅํ•˜๊ณ  ํ™”๋ฉด์— ์ „๋‹ฌํ•˜๋Š”๋ฐ ์ง‘์ค‘ํ•ด์•ผ ํ•œ๋‹ค. 1) ์ ์šฉ Controller ๊ธฐ์กด์— ๊ตฌํ˜„ํ•œ HelloController ์•ˆ์— ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๋‹ค. ์ด์ „์— ๊ตฌํ˜„ํ•œ ๋ฉ”์„œ๋“œ๋Š” ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๋ฐ›์•„์™”๋‹ค. ..

    [Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - ์ •์  ์ปจํ…์ธ  (1)

    [Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - ์ •์  ์ปจํ…์ธ  (1)

    ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ ์›น ๊ฐœ๋ฐœ์€ ํฌ๊ฒŒ 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค. ์ •์  ์ปจํ…์ธ  ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž‘์—… ์—†์ด ๋‹จ์ง€ ํŒŒ์ผ์„ ์›น๋ธŒ๋ผ์šฐ์ €๋กœ ๋‚ด๋ ค์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค. Welcome ํŽ˜์ด์ง€ MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„ ๊ฐ€์žฅ ๋งŽ์ด ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ(C), ๋ชจ๋ธ(M), ํ…œํ”Œ๋ฆฟ ์—”์ง„์˜ ํ™”๋ฉด(V)์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ…œํ”Œ๋ฆฟ ์—”์ง„(JSP, PHP): HTML์„ ์„œ๋ฒ„์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜์—ฌ ๋™์ ์œผ๋กœ ๋ฐ”๊ฟ”์„œ ๋‚ด๋ ค์ค€๋‹ค. API ์„œ๋ฒ„์—์„œ Json๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํฌ๋งท์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ๋‚˜ ์•„์ดํฐ ๊ฐœ๋ฐœ ์‹œ์— ์‚ฌ์šฉํ•œ๋‹ค. ์„œ๋ฒ„์™€ ์„œ๋ฒ„ ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ API ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค. 1. ์ •์  ์ปจํ…์ธ  ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ์ •์  ์ปจํ…์ธ  ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค. 1) ๋™์ž‘ ๋ฐฉ์‹ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ ๋˜์ง€๋ฉด ๋‚ด์žฅ ํ†ฐ์บฃ ์„œ..