Study

Spring @RestController ์‘๋‹ต ์‹œ, ์ •์˜ ๋˜์ง€ ์•Š์€ ๊ฐ’๋„ ๊ฐ™์ด ์‘๋‹ต๋˜๋Š” ์ด์œ  @Getter @Setter public class UserDomain { private String name; private int age; public boolean isTwenties() { if (this.age >= 20 && this.age < 30){ return true; } return false; } } ์œ„์™€ ๊ฐ™์ด, ๋„๋ฉ”์ธ ๊ฐ์ฒด ์•ˆ์— ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ํฌํ•จ๋œ ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ์ƒ์ƒํ•ด๋ณด์ž. isTwenties() ๋Š” ํ˜„์žฌ User์˜ ๋‚˜์ด๋ฅผ ํŒ๋‹จํ•˜์—ฌ 20๋Œ€์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. @RestController public class UserController { @GetMapping("/u..
1. Maven Java ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ํˆด ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋ ค๋Š” ์‹œ๋„๋กœ ์‹œ์ž‘๋˜์—ˆ๋‹ค. ๋ณดํ†ต Java ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜์ง€๋งŒ Java ํ”„๋กœ์ ํŠธ ๋ฟ ์•„๋‹ˆ๋ผ JVM์—์„œ ๋™์ž‘ํ•˜๋Š” Kotlin or Scale์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์‹ฌ์ง€์–ด C#, Ruby์—์„œ๋„ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค. You can not only build Java projects with it, but pretty much every project written in a JVM language like Kotlin or Scala, as well as other languages like C# and Ruby. 2. ํŠน์ง• ์ข…์†์„ฑ ๊ด€๋ฆฌ: ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(3th-party dependency)๋ฅผ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์— ์‰ฝ๊ฒŒ ํฌํ•จ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ์ฐธ๊ณ  : ..
ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์€ ํฌ๊ฒŒ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค ํ•ต์‹ฌ ๊ธฐ๋Šฅ : ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ณ ์œ ์˜ ๊ธฐ๋Šฅ ์˜ˆ๋ฅผ ๋“ค์–ด BookPrinter์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์€ Print ๋กœ์ง ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ : ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ๋ณด์กฐํ•˜๊ธฐ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” ๊ธฐ๋Šฅ ์˜ˆ๋ฅผ ๋“ค์–ด ๋กœ๊ทธ ์ถ”์  ๋กœ์ง, ์‹คํ–‰ ์‹œ๊ฐ„ ์ถœ๋ ฅ ๋“ฑ ๋ณดํ†ต ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์€ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค์— ๊ฑธ์ณ์„œ ํ•จ๊ป˜ ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜ธ์ถœ์„ ๋กœ๊น…ํ•ด์•ผ ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ์„ ์ƒ๊ฐํ•ด๋ณด์ž ๋กœ๊ทธ ์ถ”์  ๋กœ์ง ๊ฐ™์€ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์€ ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ(cross-cutting concerns)๊ฐ€ ๋œ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด ํ•˜๋‚˜์˜ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์ด ์—ฌ๋Ÿฌ ๊ณณ์— ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ๋œป์ด๋‹ค. ํ•˜์ง€๋งŒ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์„ ์ ์šฉํ•  ๋•Œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์„ ์ ์šฉํ•  ๋•Œ ์•„์ฃผ ๋งŽ์€ ๋ฐ˜๋ณต์ด ํ•„์š”ํ•˜๋‹ค. ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ..
PRG Post/Redirect/Get Post/Redirect/Get ํŒจํ„ด์€ ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๊ฑฐ๋‚˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋’ค๋กœ ํ™”์‚ดํ‘œ๋ฅผ ํด๋ฆญํ•  ๋•Œ ์ค‘๋ณต๋œ ์–‘์‹ ์ œ์ถœ์„ ๋ฐฉ์ง€ํ•˜๋Š” ํŒจํ„ด์ด๋‹ค. Post ๋ฐฉ์‹์œผ๋กœ ์˜จ ์š”์ฒญ์— ๋Œ€ํ•ด์„œ Get ๋ฐฉ์‹์œผ๋กœ ์›นํŽ˜์ด์ง€๋ฅผ Redirect ์‹œํ‚ค๋Š” ํŒจํ„ด์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค. ์ค‘๋ณต ๋“ฑ๋ก ์˜ˆ์‹œ ์‚ฌ์šฉ์ž๊ฐ€ ํšŒ์›๊ฐ€์ž…์„ ์™„๋ฃŒํ•œ ๋‹ค์Œ, ๋ฐ”๋กœ ํ™•์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™๋œ๋‹ค๊ณ  ๊ฐ€์ • ์‚ฌ์šฉ์ž๊ฐ€ ํšŒ์›๊ฐ€์ž…์„ ์œ„ํ•ด ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€๋กœ ์ด๋™ ํšŒ์›๊ฐ€์ž…์— ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ํšŒ์›๊ฐ€์ž… ๋ฒ„ํŠผ ํด๋ฆญ (POST ์š”์ฒญ) ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต (์„œ๋ฒ„์—์„œ ํšŒ์›๊ฐ€์ž… ๋กœ์ง ์„ฑ๊ณต) ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต ํ™•์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ (์„ฑ๊ณต ํ™•์ธ ํŽ˜์ด์ง€๋กœ forward) ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ "์ƒˆ๋กœ ๊ณ ์นจ" ๋˜๋Š” "๋’ค๋กœ"๋ฅผ ํด๋ฆญ ๋งŒ์•ฝ Post/Redirect..
์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ  ์• ๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜์˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋งค์šฐ ๋‹ค์–‘ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. HttpServletRequest , Model์€ ๋ฌผ๋ก ์ด๊ณ , @RequestParam , @ModelAttribute ๊ฐ™์€ ์• ๋…ธํ…Œ์ด์…˜ ๊ทธ๋ฆฌ๊ณ  @RequestBody , HttpEntity ๊ฐ™์€ HTTP ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„๊นŒ์ง€ ๋งค์šฐ ํฐ ์œ ์—ฐํ•จ์„ ๋ณด์—ฌ์ฃผ์—ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š” ๋ฐ”๋กœ ArgumentResolver ๋•๋ถ„์ด๋‹ค. ์• ๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” RequestMappingHandlerAdaptor ๋Š” ArgumentResolver ๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์ปจํŠธ๋กค๋Ÿฌ(ํ•ธ๋“ค๋Ÿฌ)๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๋‹ค์–‘ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐ’(๊ฐ์ฒด)์„ ์ƒ์„ฑํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŒŒ๋ฆฌ๋ฏธํ„ฐ์˜ ๊ฐ’์ด ๋ชจ๋‘..
YURI๐Ÿ•๐Ÿ“๐Ÿถ
'Study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (5 Page)