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..
Study
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 ๋ฅผ ํธ์ถํด์ ์ปจํธ๋กค๋ฌ(ํธ๋ค๋ฌ)๊ฐ ํ์๋ก ํ๋ ๋ค์ํ ํ๋ผ๋ฏธํฐ์ ๊ฐ(๊ฐ์ฒด)์ ์์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ฆฌ๋ฏธํฐ์ ๊ฐ์ด ๋ชจ๋..