๐ŸŒธ [SPRING] | ๐ŸŽbean(์–ด๋…ธํ…Œ์ด์…˜) ๐Ÿ™ƒIOC ๐Ÿ‘DI ๐Ÿ“กxml

0
post-thumbnail

๐Ÿ–ฑ ํด๋ฆญ! | ์‚ฌ์ง„ ์ถœ์ฒ˜ : 'ํ–„์‹ '์˜ ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ 2018๋…„ ์ž‘์„ฑ๋œ ๊ฒŒ์‹œ๊ธ€ '์Šค๋ˆ„ํ”ผ ๋ช…๋Œ€์‚ฌ ์งค ๋ชจ์Œ์ง‘ โ‘ค :: ์•„์ดํฐ ๋ฐฐ๊ฒฝํ™”๋ฉด ์Šค๋ˆ„ํ”ผ ์›€์งค'



๐Ÿ”น MVC

  • ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ ํŒŒ์ผ๋“ค์„ ์–ด๋–ป๊ฒŒ ๋‚˜๋ˆŒ๊นŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก 
  • model :
    • dao : mapper.interface, mapper.xml , vo , dto , domain
  • controller :
    • controller ( servlet์—ญํ• , ์ฃผ์†Œ๋งคํ•‘๊นŒ์ง€๋งŒ ) , service ( ๋กœ์ง )
  • view : jsp

๐Ÿ”น Bean

  • Bean๋“ฑ๋ก = @ ์–ด๋…ธํ…Œ์ด์…˜
    • ๋ฉ”์†Œ๋“œ์™€ ๋ฉค๋ฒ„ํ•„๋“œ์™€ ํด๋ž˜์Šค ์œ„์— ์–ด๋…ธํ…Œ์ด์…˜์„ ์จ์š”.
    • ex : @Controller , @Service
  • Bean ๋“ฑ๋ก์„ ํ•œ๋‹ค๋ฉด ๋” ์ด์ƒ new๋กœ ๊ฐ์ฒด ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋ผ์š”. ์Šคํ”„๋ง์ด ๊ฐ์ฒด ๋“ฑ๋ก์„ ํ•ด์ฃผ๋‹ˆ๊นŒ์š”.
  • ํด๋ž˜์Šค๋ฅผ ๊ฐ์ฒดํ™”ํ•˜์—ฌ spring์ด ๊ทธ ์ฃผ์†Œ๊ฐ’๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ์š”์ฒญํ•  ๋•Œ ๋งˆ๋‹ค ๊ฐ€์ ธ๋‹ค ์ค˜์š”.

๐Ÿ”น IOC

  • IOC๋ฅผ ์ดํ•ด ํ•ด์•ผ ์Šคํ”„๋ง์ด ์ดํ•ด๊ฐ€ ๋ผ์š”.
  • ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์š”
  • ํด๋ž˜์Šค๋“ค๋งˆ๋‹ค ๊ด€๊ณ„๊ฐ€ ์žˆ์ฃ ?
  • a๊ฐ์ฒด์™€ b๊ฐ์ฒด๊ฐ€ is๊ด€๊ณ„์ด๋ฉด ์ƒ์†๊ด€๊ณ„์˜ˆ์š”.
  • a๊ฐ์ฒด์™€ b๊ฐ์ฒด๊ฐ€ has๊ด€๊ณ„์ด๋ฉด ํฌํ•จ๊ด€๊ณ„์˜ˆ์š”. ๐Ÿ‘‰ IOC>
  • a(Tv) B(LGTV) ๐Ÿ‘‰ LGTV is TV ๐Ÿ‘‰ is a ๐Ÿ‘‰ ์ƒ์†
  • LGTV์—์„œ ์Šคํ”ผ์ปค๊ฐ€ ํ•„์š”ํ•ด์„œ ์™ธ๋ถ€์—์„œ ๋งŒ๋“  ์Šคํ”ผ์ปค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด์š”?
  • a(Haman Speaker) b(LGTV) ๐Ÿ‘‰ LGTV has Haman Speaker ๐Ÿ‘‰ has a ๐Ÿ‘‰ ํฌํ•จ๊ด€๊ณ„ ๐Ÿ‘‰ ์ด ๋•Œ IOC๊ฐ€ ์ค‘์š”ํ•ด์š”
  • LGTV๋Š” Haman Speaker๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•ด์š”.
  • JAVA์—์„œ๋Š” LGTVํด๋ž˜์Šค ์•ˆ์—์„œ H์Šคํ”ผ์ปค์˜ ๊ฐ์ฒด๋ฅผ new๋กœ ๋งŒ๋“ค์—ˆ์–ด์š”.
  • LGTV โžก H์Šคํ”ผ์ปค : ์ •๋ฐฉํ–ฅ
  • H์Šคํ”ผ์ปค๋Š” ์šฐํผ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•ด์š”.
  • b(์šฐํผ1) c(์šฐํผ2) ๐Ÿ‘‰ a(Haman Speaker) ๐Ÿ‘‰ H์Šคํ”ผ์ปค has b์šฐํผ ๐Ÿ‘‰ ํฌํ•จ๊ด€๊ณ„
  • LGTV ๐Ÿ‘‰ H์Šคํ”ผ์ปค ๐Ÿ‘‰ ์šฐํผ

  • LGTV ๐Ÿ‘‰ H์Šคํ”ผ์ปค ๐Ÿ‘‰ ์šฐํผ ย ย ย ย ย  ๐Ÿ’กโ— ์ด๊ฒƒ์„ ๋ฐ˜๋Œ€๋กœ ํ•˜์ž ๐Ÿ‘‰๐Ÿ‘‰ ๐Ÿ’ฅโ— IOC ํƒ„์ƒ
  • IOC์˜ IDEA๐Ÿ’ญ : new ํ•˜๋Š” ๊ฒƒ์„ ์ง์ ‘ํ•˜์ง€ ๋ง๊ณ  ์™ธ๋ถ€์—์„œ ๋งŒ๋“ค์ž
  • ์™ธ๋ถ€์—์„œ a์šฐํผ๋„ ๊ฐ์ฒดํ™”ํ•˜๊ณ  H์Šคํ”ผ์ปค๋„ ๊ฐ์ฒดํ™”ํ•˜์ž
  • ์™ธ๋ถ€์—์„œ ์šฐํผ, ์Šคํ”ผ์ปค, ํ‹ฐ๋น„ ๊ฐ์ฒด๋ฅผ ๋‹ค ๋งŒ๋“ค์–ด์š”.
    ์šฐํผ์˜ ์ฃผ์†Œ๊ฐ’์„ ์Šคํ”ผ์ปค์— ๋„ฃ์–ด์ค˜์š”. ๐Ÿ‘‰ ์Šคํ”ผ์ปค์˜ ์ฃผ์†Œ๊ฐ’์„ ํ‹ฐ๋น„์— ๋„ฃ์–ด์ค˜์š”. ๐Ÿ‘‰ ์ด๊ฒƒ์ด ๋ฐ”๋กœ ๐Ÿ’ฅโ— DI

  • >IOC : ํ๋ฆ„์„ ๋ฐ˜๋Œ€๋กœ ํ•œ๋‹ค.
  • DI : ์™ธ๋ถ€์—์„œ ๊ฐ์ฒด๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.
  • ์™ธ๋ถ€ = ์Šคํ”„๋ง
  • xml : ์Šคํ”„๋ง์•„ ์–˜ ๊ฐ์ฒดํ™” ํ•œ ๊ฑฐ ์–˜ํ•œํ…Œ ๋„ฃ์–ด์ค˜~!
  • IOC๋Š” ๊ทธ๋Ÿฌํ•œ ๊ฐœ๋…์ด์˜ˆ์š”.
  • IOC์ปจํ…Œ์ด๋„ˆ๋Š” ๊ทธ๋ƒฅ ์Šคํ”„๋ง ๊ทธ ์ž์ฒด์˜ˆ์š”. ์Šคํ”„๋ง์ด IOC๋ผ๋Š” ๊ฐœ๋…์„ ์‹คํ˜„ํ™” ์‹œ์ผœ์ฃผ๋‹ˆ๊นŒ์š”.
  • ์ปจํ…Œ์ด๋„ˆ ๋‚˜์˜ค๋ฉด ์Šคํ”„๋ง์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์ด์˜ˆ์š”. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ, IOC์ปจํ…Œ์ด๋„ˆ, ์ปจํ…์ŠคํŠธ ์ปจํ…Œ์ด๋„ˆ ๋“ฑ๋“ฑ ์Šคํ”„๋ง์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ..์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ๋๋‚˜๋Š” ๋‹จ์–ด๋“ค์ด ๋งŽ์•„์š”.

๐Ÿ”น DI

Bean vs DI

  • ๋นˆ๋“ฑ๋ก ๋œ ๊ฒƒ์„ ๋„ฃ์–ด์ฃผ๋ฉด(์จ์ฃผ๋ฉด) ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ DI
  • ๋นˆ๋“ฑ๋ก์ด DI๊ฐ€ ์•„๋‹ˆ์˜ˆ์š”~โš ๏ธ
  • DIํ•  ๋•Œ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ํ•œ๊ฐœ๋„ ์—†๋‹ค๋ฉด ERRORโ•
  • ๋‘๊ฐœ์—ฌ๋„ ERRORโ•
  • ๊ทธ๋Ÿฐ์‹์œผ๋กœ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ๋Š” xml์„ ์ด์šฉํ•ด์„œ ์ •ํ•ด์ค€๋‹ค.
  • xml์—์„œ ๊ฐ์ฒดํ™”๋ฅผ ํ•˜๊ณ (bean๋“ฑ๋ก์ด ๋ผ์š”) ๊ทธ๋ฆฌ๊ณ  setter๋งŒ๋“ค์–ด์„œ ๊ฑฐ๊ธฐ์— property์ด์šฉํ•ด์„œ ๊ฐ’์„ ๋ฐ€์–ด๋„ฃ์–ด์ฃผ๋Š” ๊ฑฐ์˜ˆ์š”.
  • xmlํŒŒ์ผ์€ ์žฌ ์ปดํŒŒ์ผ์ด ํ•„์š”์—†์–ด์„œ ์†Œ์Šค ์ˆ˜์ •์ด ์•ˆ๋˜๊ฒŒ๋” ๋„์™€์ฃผ๋Š” ๊ฒƒ์ด์˜ˆ์š”.


๐Ÿ“Œ ๐ŸŽbean๋“ฑ๋ก(์–ด๋…ธํ…Œ์ด์…˜) ๐Ÿ™ƒIOC ๐Ÿ‘DI ๐Ÿ“กxml

๐Ÿ”ด SPRING์˜ ํ๋ฆ„์ด ์ด๋ ‡๊ฒŒ ํ˜๋Ÿฌ๊ฐ€๋Š” ๊ฑฐ์ฃ ~^^

๐Ÿ”ด bean๋“ฑ๋ก์„ ์™œํ•ด? DIํ• ๋ ค๊ณ ~!

๐Ÿ”ด DI ์™œ ํ•ด? ๋‚˜์ค‘์— ๋ฐ”๊ฟ”์น˜๊ธฐ ์‰ฝ๊ฒŒ ํ• ๋ ค๊ณ ~!

profile
๋ช‡ ๋ฒˆ์„ ๋„˜์–ด์ ธ๋„ ์•ž์œผ๋กœ ๊ณ„์† ๋‚˜์•„๊ฐ€์ž

0๊ฐœ์˜ ๋Œ“๊ธ€