๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring-study๐ŸŒฑ/Spring-Basic60

Section 9-8. ์Šค์ฝ”ํ”„์™€ ํ”„๋ก์‹œ ์ด๋ฒˆ์—๋Š” ํ”„๋ก์‹œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด๋ณด์ž. ์ง€๋‚œ ์ž…๋ฌธํŽธ์—์„œ ๋ฐฐ์› ๋“ฏ์ด ํ”„๋ก์‹œ๋Š” ๊ฐ€์งœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด๋œ๋‹ค. ์—ฌ๊ธฐ๊ฐ€ ํ•ต์‹ฌ์ด๋‹ค. proxyMode = ScopedProxyMode.TARGET_CLASS ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์ž. ์ ์šฉ ๋Œ€์ƒ์ด ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์•„๋‹Œ ํด๋ž˜์Šค๋ฉด TARGET_CLASS ๋ฅผ ์„ ํƒ ์ ์šฉ ๋Œ€์ƒ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฉด INTERFACES ๋ฅผ ์„ ํƒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด MyLogger์˜ ๊ฐ€์งœ ํ”„๋ก์‹œ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด๋‘๊ณ  HTTP request์™€ ์ƒ๊ด€ ์—†์ด ๊ฐ€์งœ ํ”„๋ก์‹œ ํด๋ž˜์Šค๋ฅผ ๋‹ค๋ฅธ ๋นˆ์— ๋ฏธ๋ฆฌ ์ฃผ์ž…ํ•ด ๋‘˜ ์ˆ˜ ์žˆ๋‹ค. ๋‚˜๋จธ์ง€ ์ฝ”๋“œ๋“ค์€ Provider ์‚ฌ์šฉ ์ด์ „์œผ๋กœ ๋Œ๋ ค๋‘”๋‹ค. ์Šคํ”„๋ง ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•ด๋ณด๋ฉด Provider๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์™€ ๋˜‘๊ฐ™์ด ๋™์ž‘ํ•œ๋‹ค. myLogger๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ถœ๋ ฅํ•ด๋ณด๋‹ˆ ์ˆœ์ˆ˜ํ•œ myLogger๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ๋’ค.. 2022. 5. 4.
Section 9-7. ์Šค์ฝ”ํ”„์™€ Provider ์ฒซ๋ฒˆ์งธ ํ•ด๊ฒฐ๋ฐฉ์•ˆ์€ ์•ž์„œ ๋ฐฐ์šด Provider๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์•ž์„œ ๋ฐฐ์šด ObjectProvider๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. -> ์˜์กด๊ด€๊ณ„์ฃผ์ž…(DI)๊ฐ€ ์•„๋‹Œ ํ•„์š”ํ•œ ์˜์กด๊ด€๊ณ„๋ฅผ ์ฐพ๋Š” DL ์ด์ œ ๋งคํ•‘์‹œํ‚จ localhost:8080/log-demo๋กœ ์ ‘์†์„ ํ•ด๋ณด์ž. ResponseBody๋ฅผ ํ†ตํ•ด ๋ฐ˜ํ™˜์‹œํ‚จ OK๊ฐ€ ์ถœ๋ ฅ๋˜๊ณ  ์ฝ˜์†”์ฐฝ์„ ์—ด์–ด๋ณด๋ฉด ์ ‘์†ํ•œ ์œ ์ €์˜ UUID๊ฐ’๊ณผ requestURL, message๊ฐ€ ์ถœ๋ ฅ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒˆ๋กœ๊ณ ์นจ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•˜๋ฉด ์ƒˆ๋กœ์šด UUID์™€ request ์Šค์ฝ”ํ”„ ๋นˆ์ด ์ƒ์„ฑ๋œ๋‹ค. Thread์ง€์—ฐ์„ ํ†ตํ•ด์„œ controller์™€ Service๊ฐ„์˜ ์‹œ๊ฐ„์ฐจ๋ฅผ ๋‘๊ณ  ๊ณ ๊ฐ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ๋ฒˆ ์ฃผ์–ด๋ณด์•˜๋‹ค. controller์™€ Service๊ฐ„์˜ ์‹œ๊ฐ„์ฐจ๋ฅผ ๋‘์–ด ๊ทธ ์‚ฌ์ด์— ๋‹ค๋ฅธ .. 2022. 5. 3.
Section 9-6. request ์Šค์ฝ”ํ”„ ์˜ˆ์ œ ๋งŒ๋“ค๊ธฐ ์›น ํ™˜๊ฒฝ ์ถ”๊ฐ€ ์›น ์Šค์ฝ”ํ”„๋Š” ์›น ํ™˜๊ฒฝ์—์„œ๋งŒ ๋™์ž‘ํ•˜๋ฏ€๋กœ web ํ™˜๊ฒฝ์ด ๋™์ž‘ํ•˜๋„๋ก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์ž. ์ด์ œ hello.core.CoreApplication ์˜ main ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. web๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๋‚ด์žฅ ํ†ฐ์ผ“ ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ•ด์„œ ์›น ์„œ๋ฒ„์™€ ์Šคํ”„๋ง์„ ํ•จ๊ป˜ ์‹คํ–‰์‹œํ‚จ๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ์›น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด AnnotationConfigApplicationContext๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ๋™ํ•œ๋‹ค. ์›น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด ์›น๊ณผ ๊ด€๋ จ๋œ ์ถ”๊ฐ€ ์„ค์ •๊ณผ ํ™˜๊ฒฝ๋“ค์ด ํ•„์š”ํ•˜๋ฏ€๋กœ AnnotationConfigServletWebServerApplicationContext๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ๋™ํ•œ๋‹ค. request ์Šค์ฝ”ํ”„ ์˜ˆ์ œ ๊ฐœ๋ฐœ ๋™์‹œ์— .. 2022. 5. 3.
Section 9-5. ์›น ์Šค์ฝ”ํ”„ ์ง€๊ธˆ๊นŒ์ง€ ์‹ฑ๊ธ€ํ†ค๊ณผ ํ”„๋กœํ† ํƒ€์ž… ์Šค์ฝ”ํ”„๋ฅผ ํ•™์Šตํ–ˆ๋‹ค. ์‹ฑ๊ธ€ํ†ค์€ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ์‹œ์ž‘๊ณผ ๋๊นŒ์ง€ ํ•จ๊ป˜ํ•˜๋Š” ๋งค์šฐ ๊ธด ์Šค์ฝ”ํ”„์ด๊ณ , ํ”„๋กœํ† ํƒ€์ž…์€ ์ƒ์„ฑ๊ณผ ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…, ๊ทธ๋ฆฌ๊ณ  ์ดˆ๊ธฐํ™”๊นŒ์ง€๋งŒ ์ง„ํ–‰ํ•˜๋Š” ํŠน๋ณ„ํ•œ ์Šค์ฝ”ํ”„์ด๋‹ค. ์ด๋ฒˆ์—๋Š” ์›น ์Šค์ฝ”ํ”„์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž ์›น ์Šค์ฝ”ํ”„์˜ ํŠน์ง• ์›น ์Šค์ฝ”ํ”„๋Š” ์›น ํ™˜๊ฒฝ์—์„œ๋งŒ ๋™์ž‘ํ•œ๋‹ค. ์›น ์Šค์ฝ”ํ”„๋Š” ํ”„๋กœํ† ํƒ€์ž…๊ณผ ๋‹ค๋ฅด๊ฒŒ ์Šคํ”„๋ง์ด ํ•ด๋‹น ์Šค์ฝ”ํ”„์˜ ์ข…๋ฃŒ์‹œ์ ๊นŒ์ง€ ๊ด€๋ฆฌํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ข…๋ฃŒ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค. ์›น ์Šค์ฝ”ํ”„ ์ข…๋ฅ˜ request: HTTP ์š”์ฒญ ํ•˜๋‚˜๊ฐ€ ๋“ค์–ด์˜ค๊ณ  ๋‚˜๊ฐˆ ๋•Œ ๊นŒ์ง€ ์œ ์ง€๋˜๋Š” ์Šค์ฝ”ํ”„, ๊ฐ๊ฐ์˜ HTTP ์š”์ฒญ๋งˆ๋‹ค ๋ณ„๋„์˜ ๋นˆ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ณ , ๊ด€๋ฆฌ๋œ๋‹ค. session: HTTP Session๊ณผ ๋™์ผํ•œ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง€๋Š” ์Šค์ฝ”ํ”„ application: ์„œ๋ธ”๋ฆฟ ์ปจํ…์ŠคํŠธ( ServletContext .. 2022. 5. 3.
Section 9-4. ํ”„๋กœํ† ํƒ€์ž… ์Šค์ฝ”ํ”„ - ์‹ฑ๊ธ€ํ†ค ๋นˆ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ์‹œ Provider๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐ ์ด์ „์žฅ์—์„œ ์‹ฑ๊ธ€ํ†ค ๋นˆ๊ณผ ํ”„๋กœํ† ํƒ€์ž… ๋นˆ์„ ํ•จ๊ป˜ ์‚ฌ์šฉ์‹œ์— ๋™์‹œ์„ฑ๋ฌธ์ œ์™€ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. ์‹ฑ๊ธ€ํ†ค ๋นˆ๊ณผ ํ”„๋กœํ† ํƒ€์ž… ๋นˆ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ, ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค ํ•ญ์ƒ ์ƒˆ๋กœ์šด ํ”„๋กœํ† ํƒ€์ž… ๋นˆ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ๋ง ๊ทธ๋Œ€๋กœ ๋กœ์ง์„ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด prototypeBean์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. ์‹คํ–‰ํ•ด๋ณด๋ฉด applicationContext.getBean()์„ ํ†ตํ•ด ํ•ญ์ƒ ์ƒˆ๋กœ์šด ํ”„๋กœํ† ํƒ€์ž… ๋นˆ์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜์กด๊ด€๊ณ„๋ฅผ ์™ธ๋ถ€์—์„œ ์ฃผ์ž…(DI)๋ฐ›๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ด๋ ‡๊ฒŒ ์ง์ ‘ ํ•„์š”ํ•œ ์˜์กด๊ด€๊ณ„๋ฅผ ์ฐพ๋Š” ๊ฒƒ์„ Dependency Lookup(DL) - ์˜์กด๊ด€๊ณ„ ์กฐํšŒ(ํƒ์ƒ‰)์ด๋ผ๊ณ  ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ์Šคํ”„๋ง์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ ์ „์ฒด๋ฅผ ์ฃผ์ž…๋ฐ›๊ฒŒ ๋˜๋ฉด, ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ์ข…์†์ ์ธ ์ฝ”๋“œ๊ฐ€ .. 2022. 5. 3.