Language & Framework/Spring2023. 2. 3. 21:52[์Šคํ”„๋ง MVC] ์Šคํ”„๋ง MVC ๊ตฌ์กฐ ์ดํ•ด

์Šคํ”„๋ง MVC 1ํŽธ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ์Šคํ”„๋ง MVC ์ „์ฒด ๊ตฌ์กฐ ๊ตฌ์กฐ ์ด์ „์— ์ง์ ‘ ๋งŒ๋“ค์—ˆ๋˜ MVC ํ”„๋ ˆ์ž„์›Œํฌ ๊ตฌ์กฐ์™€ ๊ฑฐ์˜ ๊ฐ™์€ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์Šคํ”„๋ง MVC๋„ ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ์˜ ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ(Dispatcher Servlet)์ด๋‹ค. ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์€ HttpServlet์„ ์ƒ์†๋ฐ›์œผ๋ฉฐ, ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ๋˜ํ•œ ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์„ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ์ž๋™ ๋“ฑ๋กํ•จ๊ณผ ๋™์‹œ์— ๋ชจ๋“  ๊ฒฝ๋กœ์— ๋Œ€ํ•ด ๋งคํ•‘๋˜๋„๋ก ํ•œ๋‹ค. ์ด๋•Œ์˜ urlPatterns ์†์„ฑ ๊ฐ’์€ "/"์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋ถ€๊ฐ€์ ์œผ๋กœ ๋“ฑ๋กํ•œ ์„œ๋ธ”๋ฆฟ์ด ๋” ์ž์„ธํ•œ ๊ฒฝ๋กœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ์„œ ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ๋„ ํ•จ๊ป˜ ๋™์ž‘ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ๋™์ž‘ ์ˆœ์„œ ์„œ๋ธ”๋ฆฟ์ด ํ˜ธ์ถœ๋˜๋ฉด ๋ถ€๋ชจ ํด๋ž˜์Šค์ธ H..

Language & Framework/Spring2023. 1. 28. 16:38[์Šคํ”„๋ง MVC] MVC ํ”„๋ ˆ์ž„์›Œํฌ ๋งŒ๋“ค๊ธฐ

์Šคํ”„๋ง MVC 1ํŽธ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ ํŒจํ„ด ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ ์„œ๋ธ”๋ฆฟ ํ•˜๋‚˜๋กœ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์€ ๋’ค, ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์š”์ฒญ์— ๋งž๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ์•„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋น„์œ ํ•˜์ž๋ฉด ์ž…๊ตฌ๋ฅผ ํ•˜๋‚˜๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ณตํ†ต ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ , ๊ณตํ†ต์ ์œผ๋กœ ๊ฑฐ์ณ๊ฐ€๋Š” ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์„œ๋ธ”๋ฆฟ์„ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋จธ์ง€ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ๋Š” ์„œ๋ธ”๋ฆฟ์„ ์ด์šฉํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ์Šคํ”„๋ง ์›น MVC ๋˜ํ•œ ํ•ด๋‹น ํŒจํ„ด์„ ์ฐจ์šฉํ•˜์—ฌ DispatcherServlet์„ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. v1. ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ ๋„์ž… ํ•˜์œ„ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ชจ๋“  ์š”์ฒญ์„ ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ ์„œ๋ธ”๋ฆฟ์—์„œ ์ผ์ฐจ์ ์œผ๋กœ ๋ฐ›๊ณ , URI๋ฅผ ์กฐํšŒํ•˜์—ฌ ์‹ค์ œ ํ˜ธ์ถœํ•  ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ๋Š”๋‹ค. ์ด๋•Œ ์—†์„ ๊ฒฝ์šฐ 404 ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์ฐพ์•˜๋‹ค๋ฉด..

Language & Framework/Spring2023. 1. 23. 11:35[์Šคํ”„๋ง MVC] ์„œ๋ธ”๋ฆฟ/JSP/MVC ํŒจํ„ด

์Šคํ”„๋ง MVC 1ํŽธ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ํšŒ์› ๊ด€๋ฆฌ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ @Getter @Setter @NoArgsConstructor public class Member { private Long id; private String userName; private int age; public Member(String userName, int age) { this.userName = userName; this.age = age; } } ์ด๋ฆ„๊ณผ ๋‚˜์ด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ํšŒ์› ์ •๋ณด๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ์•„์ด๋””๋Š” ์ €์žฅ์†Œ์—์„œ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์„œ๋ธ”๋ฆฟ์œผ๋กœ ํšŒ์› ๊ด€๋ฆฌ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งŒ๋“ค๊ธฐ HttpServlet ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ HttpServlet์„ ์ƒ์†๋ฐ›์•„ ๊ตฌํ˜„ํ•œ๋‹ค. HttpServlet์—๋Š” service()๋ผ..

Language & Framework/Spring2023. 1. 21. 17:48[์Šคํ”„๋ง MVC] ์„œ๋ธ”๋ฆฟ

์Šคํ”„๋ง MVC 1ํŽธ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. HttpServletRequest ์•ž์„  ํฌ์ŠคํŒ…์—์„œ ์„œ๋ธ”๋ฆฟ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์š”์ฒญ ๋ฐ ์‘๋‹ต ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋ฉฐ, ์ด๋Š” WAS๊ฐ€ HTTP ์š”์ฒญ ์‹œ ์š”์ฒญ ๋ฐ ์‘๋‹ต ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“  ๋’ค ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค๋Š” ๊ฒƒ์„ ์„ค๋ช…ํ•˜์˜€๋‹ค. ์„œ๋ธ”๋ฆฟ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ๋ฐœ์ž ๋Œ€์‹  ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ํŒŒ์‹ฑ ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ HttpServletRequest๋ผ๋Š” ๊ฐ์ฒด์— ๋‹ด์•„์„œ ์ œ๊ณตํ•˜๋Š”๋ฐ, ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. 1. Start Line: HTTP ๋ฉ”์†Œ๋“œ, URL, ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง, ํ”„๋กœํ† ์ฝœ 2. ํ—ค๋”: ํ—ค๋” ์กฐํšŒ 3. ๋ฐ”๋””: form ํŒŒ๋ผ๋ฏธํ„ฐ ํ˜•์‹ ์กฐํšŒ, ๋ฉ”์‹œ์ง€ ๋ฐ”๋””..

Language & Framework/Spring2023. 1. 21. 16:18[์Šคํ”„๋ง MVC] ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ดํ•ด

์Šคํ”„๋ง MVC 1ํŽธ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ์›น ์„œ๋ฒ„, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ์›น ์„œ๋ฒ„ (Web Server) HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ์ฃผ๋กœ ์ •์  ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. Nginx๋‚˜ Apache๊ฐ€ ์›น ์„œ๋ฒ„์— ์†ํ•œ๋‹ค. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ (WAS - Web Application Server) HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ์›น ์„œ๋ฒ„์˜ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•จ๊ณผ ๋™์‹œ์— ๋™์  HTML, HTTP API, JSP์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. Tomcat์ด ๋Œ€ํ‘œ์ ์œผ๋กœ WAS์— ์†ํ•œ๋‹ค. ์›น ์„œ๋ฒ„์™€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ์›น ์„œ๋ฒ„๋Š” ์ •์  ๋ฆฌ์†Œ์Šค๋ฅผ, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ์ฃผ๋กœ ๋‹ด๋‹นํ•œ๋‹ค๊ณ  ํ•˜์ง€๋งŒ, ์›น ์„œ๋ฒ„๋„ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๊ธฐ๋„ ํ•˜๊ณ  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜..

Language & Framework/Spring2023. 1. 12. 20:58[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ] ๋นˆ ์Šค์ฝ”ํ”„

์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ๋นˆ ์Šค์ฝ”ํ”„๋ž€? ๋ง ๊ทธ๋Œ€๋กœ ๋นˆ์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ๋œปํ•œ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€๋Š” ์Šคํ”„๋ง ๋นˆ์ด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ์‹œ์ž‘๊ณผ ํ•จ๊ป˜ ์ƒ์„ฑ๋˜์–ด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์œ ์ง€๋œ๋‹ค๊ณ  ํ•™์Šตํ•˜์˜€๋Š”๋ฐ, ์ด๊ฒƒ์€ ์Šคํ”„๋ง ๋นˆ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ฑ๊ธ€ํ†ค ์Šค์ฝ”ํ”„๋กœ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์Šคํ”„๋ง์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ์Šค์ฝ”ํ”„๋ฅผ ์ง€์›ํ•œ๋‹ค. 1. ์‹ฑ๊ธ€ํ†ค: ๊ธฐ๋ณธ ์Šค์ฝ”ํ”„๋กœ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ์‹œ์ž‘๊ณผ ์ข…๋ฃŒ๊นŒ์ง€ ์œ ์ง€๋˜๋Š” ๊ฐ€์žฅ ๋„“์€ ๋ฒ”์œ„์˜ ์Šค์ฝ”ํ”„์ด๋‹ค. 2. ํ”„๋กœํ† ํƒ€์ž…: ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ํ”„๋กœํ† ํƒ€์ž… ๋นˆ์˜ ์ƒ์„ฑ๊ณผ ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž…, ์ดˆ๊ธฐํ™”๊นŒ์ง€๋งŒ ๊ด€์—ฌํ•˜๊ณ  ๊ทธ ์ด์ƒ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š” ์งง์€ ๋ฒ”์œ„์˜ ์Šค์ฝ”ํ”„์ด๋‹ค. 3. ์›น ๊ด€๋ จ ์Šค์ฝ”ํ”„ 3-1 request: ์›น ์š”์ฒญ์ด ๋“ค์–ด์˜ค๊ณ  ๋‚˜๊ฐˆ ๋•Œ๊นŒ์ง€ ์œ ์ง€๋˜๋Š” ์Šค์ฝ”ํ”„์ด๋‹ค. 3-2 sess..

Language & Framework/Spring2023. 1. 10. 21:46[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ] ๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ

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

Language & Framework/Spring2022. 12. 21. 17:41[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ] ์˜์กด๊ด€๊ณ„ ์ž๋™ ์ฃผ์ž… (2)

์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ์กฐํšŒ ๋นˆ์ด 2๊ฐœ ์ด์ƒ์ผ ๋•Œ ๋ฌธ์ œ์  @Autowired๋Š” ํƒ€์ž…์œผ๋กœ ๋นˆ์„ ์กฐํšŒํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‹ค์ œ๋กœ๋Š” ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ac.getBean(DiscountPolicy.class)์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค. ์ด๋•Œ DiscountPolicy์˜ ํ•˜์œ„ ํƒ€์ž…์ด ๋‘ ๊ฐœ ์ด์ƒ ์กด์žฌํ•  ๊ฒฝ์šฐ @Autowired๋Š” ํ•œ ๊ฐœ๊ฐ€ ์•„๋‹Œ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋ก๋œ ํ•˜์œ„ ํƒ€์ž… ํด๋ž˜์Šค์˜ ๊ฐœ์ˆ˜๋งŒํผ ์ค‘๋ณต๋œ ๋นˆ์„ ์ฐพ๊ฒŒ ๋˜๊ณ , NoUniqueBeanDefinitionException์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ํ•˜์œ„ ํƒ€์ž…์œผ๋กœ ๋นˆ์„ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ์ ์ด ์กด์žฌํ•œ๋‹ค. 1. DIP๋ฅผ ์œ„๋ฐฐํ•จ๊ณผ ๋”๋ถˆ์–ด ์ฝ”๋“œ์˜ ์œ ์—ฐ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค. 2. ๋นˆ ์ด๋ฆ„์€ ๋‹ค๋ฅด์ง€๋งŒ ํƒ€์ž…์ด ๋™์ผํ•œ ๊ฒฝ์šฐ ๋ฌธ์ œ๋ฅผ..

image