๐ŸŒ Backend

๋‹จ๊ณ„๋ณ„๋กœ ์„ฑ์žฅํ•˜์ž!
1. Path Variable @GetMapping("/{userId}") public String findUser(@PathVariable String userId){ return "get userId=" + userId; } ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธฐ๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ๋ฐ url ๊ฒฝ๋กœ ๋‚ด์— ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. 2. Query Parameter @ResponseBody @RequestMapping("/order") public String requestParamRequired( @RequestParam(required = true) String username, @RequestParam(required = false) Integer age){ log.info("username={}, age={}", ..
1. Servlet? ์ž๋ฐ” ํ”Œ๋žซํผ ๊ธฐ๋ฐ˜์—์„œ ๋™์ ์ธ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ๋งŒ๋“ค์–ด์ง„ ์›น Application์„ ๊ตฌํ˜„ํ•˜๋Š” ์ž๋ฐ” ํด๋ž˜์Šค ์ผ๋ฐ˜ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋…์ž์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ๋ชปํ•˜๊ณ  Tomcat๊ณผ ๊ฐ™์€ JSP/Servlet ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์— ์š”์ฒญํ•˜๋ฉด ์›น ์„œ๋ฒ„๋Š” ์š”์ฒญํ•œ ์ •๋ณด์˜ ์‘๋‹ต๊ฒฐ๊ณผ๋ฅผ ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ํ‘œํ˜„ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋•Œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์— ๋”ฐ๋ผ ์›น ์„œ๋ฒ„์— ๋™์ ์œผ๋กœ ๋กœ๋“œ๋˜์–ด ๋™์ž‘ํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ Servlet์ด๋‹ค. Server Side Applet์ด๋ผ๊ณ  ํ•˜๋ฉฐ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์˜์กดํ•˜๋ฉด GUI๋ฅผ ๊ฐ€์ง„ Applet๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์„œ๋ฒ„์—์„œ ์šด์˜๋˜๋ฉฐ javax.servlet.Servlet ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค. CGI(Common Gateway Interface)์˜ ๋‹จ์ ์„ ๋ณด..
1. Bean scope๋ž€? ๋นˆ์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ๋œปํ•œ๋‹ค. ์Šคํ”„๋ง ๋นˆ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ฑ๊ธ€ํ†ค scope๋กœ ์ƒ์„ฑ๋œ๋‹ค. 2. ์Šคํ”„๋ง์ด ์ง€์›ํ•˜๋Š” ์Šค์ฝ”ํ”„ ์ข…๋ฅ˜ (1) ์‹ฑ๊ธ€ํ†ค: ๊ธฐ๋ณธ ์Šค์ฝ”ํ”„์ด๋ฉฐ, ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ์‹œ์ž‘๊ณผ ์ข…๋ฃŒ๊นŒ์ง€ ์œ ์ง€๋˜๋Š” ๊ฐ€์žฅ ๋„“์€ ๋ฒ”์œ„์˜ scope (2) ํ”„๋กœํ† ํƒ€์ž…: ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ํ”„๋กœํ† ํƒ€์ž… ๋นˆ์˜ ์ƒ์„ฑ๊ณผ ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…๊นŒ์ง€๋งŒ ๊ด€์—ฌํ•˜๊ณ  ๋”์ด์ƒ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š” ์งง์€ ๋ฒ”์œ„์˜ scope (3) ์›น ์‹ฑ๊ธ€ํ†ค ์Šค์ฝ”ํ”„๋ฅผ ์ œ์™ธํ•œ ์Šค์ฝ”ํ”„๋Š” ์ง„์งœ ํ•„์š”ํ•œ ๊ณณ์—์„œ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํŽธํ•˜๋‹ค ๋ผ๋Š” ๋ง์„ ์‹œ์ž‘์œผ๋กœ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด๋ณด์ž! 3-1. Prototype Scope ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ์กฐํšŒํ•˜๋ฉด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ํ•ญ์ƒ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ prototype scope์˜ ๋นˆ์„ ์š”์ฒญํ•˜๋ฉด ๊ทธ๋•Œ์„œ..
4๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค. 1. ์ƒ์„ฑ์ž ์ฃผ์ž… 2. setter ์ฃผ์ž… 3. ํ•„๋“œ ์ฃผ์ž… 4. ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ ์ฃผ์ž… 1. ์ƒ์„ฑ์ž ์ฃผ์ž… ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด์„œ ์˜์กด๊ด€๊ณ„๋ฅผ ์ฃผ์ž… ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ƒ์„ฑ์ž ํ˜ธ์ถœ์‹œ์ ์— 1๋ฒˆ๋งŒ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์ด ๋ณด์žฅ๋˜๋ฏ€๋กœ ์ฃผ๋กœ ๋ถˆ๋ณ€์ด๋‚˜ ํ•„์ˆ˜ ์˜์กด๊ด€๊ณ„์— ์‚ฌ์šฉํ•œ๋‹ค. ์˜์กด๊ด€๊ณ„๋ฅผ public set๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ์ˆ˜์ • ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ• ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ƒ์„ฑ์ž๊ฐ€ 1๊ฐœ์ผ๋•Œ๋Š” @Autowired๋ฅผ ๋ถ™์—ฌ์ฃผ์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์ด ๋  ๋•Œ Spring Bean์„ ๋“ฑ๋กํ•˜๊ธฐ์œ„ํ•ด new๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด์„œ ๊ฐ™์ด ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ๋˜์–ด ์ฃผ์ž…๋œ๋‹ค. final ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ƒ์„ฑ์ž์—์„œ ๊ฐ’์ด ์„ค์ •๋˜์ง€ ์•Š๋Š” ์˜ค๋ฅ˜๋ฅผ ์ปดํŒŒ์ผ ์‹œ์ ์— ๋ง‰์•„์ค€๋‹ค. @Component public class OrderServiceImpl impleme..
IOC(Inversion Of Control) ๊ธฐ์กด ํ”„๋กœ๊ทธ๋žจ์€ ํด๋ผ์ด์–ธํŠธ ๊ตฌํ˜„ ๊ฐ์ฒด๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ œ์–ด ํ๋ฆ„์„ ์Šค์Šค๋กœ ์กฐ์ข…ํ–ˆ๋‹ค. ์ฆ‰, ์Šค์Šค๋กœ ํ•„์š”ํ•œ ์„œ๋ฒ„ ๊ตฌํ˜„ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ, ์—ฐ๊ฒฐ, ์‹คํ–‰ํ–ˆ๋‹ค๋Š” ๋ง์ด๋‹ค. ํ•˜์ง€๋งŒ, ์ œ์–ด ํ๋ฆ„์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ์™ธ๋ถ€ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์†Œ์œ ํ•˜๊ณ  ์žˆ์–ด ์™ธ๋ถ€์—์„œ ์ œ์–ด ํ๋ฆ„์„ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๊ฒƒ์„ IOC ์ œ์–ด์˜ ์—ญ์ „์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด ๊ฐœ๋…์€ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌ๋ถ„ํ•  ๋•Œ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์™ธ๋ถ€์—์„œ ์ œ์–ด๋ฅผ ํ•ด์ฃผ๊ณ  ๋Œ€์‹  ์‹คํ–‰ํ•˜๋ฉด ํ”„๋ ˆ์ž„์›Œํฌ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๋‚ด๊ฐ€ ์ง์ ‘ ์ œ์–ด์˜ ํ๋ฆ„์„ ๋‹ด๋‹นํ•˜๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ DI(Dependency Injection) ๋‹คํ˜•์„ฑ ๊ฐœ๋…์„ ์ด์šฉํ•ด์„œ ํ•œ Service ๊ฐ์ฒด๊ฐ€ ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์— ์˜์กดํ•˜๊ณ  ์žˆ์„ ๋•Œ Service ํด๋ž˜์Šค ๋‚ด์—์„œ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด๋ฅผ ์ง€์ •ํ•ด์ค€๋‹ค๋ฉด ๋‚˜..
2022.06.29 1. Spring์˜ ํƒ„์ƒ ์ž๋ฐ” ์ง„์˜์— EJB(Enterprise Java Beans)๋ผ๋Š” ๊ธฐ์ˆ ์ด ์žˆ์—ˆ๋‹ค. ์ง€๊ธˆ์œผ๋กœ ๋”ฐ์ง€๋ฉด Spring + Jpa๋ฅผ ๋‹ค ํ•ฉ์ณ ๋†“์€ ๊ธฐ์ˆ . ์ปจํ…Œ์ด๋„ˆ, ๋ถ„์‚ฐ ๋“ฑ์˜ ๊ธฐ์ˆ ์ด ํš๊ธฐ์ ์ด์—ˆ๋Š”๋ฐ ๊ฐ€๊ฒฉ์ด ์ˆ˜์ฒœ๋งŒ์›์œผ๋กœ ๋น„์ŒŒ๋‹ค.. ์ด๋ก ์ ์œผ๋กœ๋Š” ์ข‹์€๋ฐ EJB์— ์˜์กด์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์žกํ•˜๊ณ  ๋Š๋ฆฐ๋ฐ๋‹ค๊ฐ€ ๋น„์‹ธ๊ธฐ๊นŒ์ง€ ํ•˜๋‹ˆ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋งŽ์ด ํž˜๋“ค์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋‹ˆ ๋‹ค์‹œ ์˜ค๋ž˜๋œ ๋ฐฉ์‹์˜ ๊ฐ„๋‹จํ•œ ์ž๋ฐ”๋กœ ๋Œ์•„๊ฐ€์ž ํ•ด์„œ ๋‚˜์˜จ ์šฉ์–ด๊ฐ€ POJO(Plain Old Java Object)๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ง์ ‘ ์Šคํ”„๋ง, hibernate๋“ฑ์˜ ์˜คํ”ˆ ์†Œ์Šค๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋‹ค. ์Šคํ”„๋ง์€ EJB ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋Œ€์ฒดํ•˜๊ณ  ๋‹จ์ˆœํ•˜์˜€๋‹ค. Hibernate๋Š” EJB์˜ ์—”ํ‹ฐํ‹ฐ๋นˆ ๊ธฐ์ˆ ์„ ๋Œ€์ฒดํ•˜์˜€๊ณ ,..
DevPoong
'๐ŸŒ Backend' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (3 Page)