Spring¿¡¼´Â ¾î¶² ÄÄÆ÷³ÍÆ®°¡ ´Ù¸¥ ÄÄÆ÷³ÍÆ®¿ÍÀÇ ¿¬°ü°ü°è¸¦ °ü¸®ÇÒ Ã¥ÀÓÀÌ ¾ø´Ù.
Áï ¾î¶² ÄÄÆ÷³ÍÆ®¿¡¼ ´Ù¸¥ ÄÄÆ÷³ÍÆ®¸¦ È£ÃâÇÏ´Â °ÍÀ» ¸»ÇÏ´Â °Í °°´Ù.
±× ´ë½Å, ÄÁÅ×À̳ʿ¡ ÀÇÇØ ÄÄÆ÷³ÍÆ® °£ÀÇ Çù¾÷À» À§ÇÑ ÂüÁ¶°¡ ÁÖ¾îÁø´Ù.
ÀÌ·¸µí ¾ÖÇø®ÄÉÀÌ¼Ç ÄÄÆ÷³ÍÆ® °£ÀÇ ¿¬°ü°ü°è¸¦ ¸¸µå´Â ÇàÀ§¸¦ ¹±â(wiring)¶ó°í Çϸç, À̹ø Àå¿¡¼ ´Ù·ê ÁÖÁ¦ÀÌ´Ù.
SpringÀÇ ¹±â´Â ´Ü¼øÈ÷ µÎ °´Ã¼°£ÀÇ ¿¬°ü°ü°è¸¦ ¼º¸³½ÃÅ°´Â ÀÛ¾÷ ÀÌ»óÀÇ °ÍÀÌ´Ù.
¶ÇÇÑ springÀ» »ç¿ëÇØ ºóÀÇ Æ¯¼ºÀ» ¼³Á¤ÇÏ´Â ¹æ¹ý, º°µµ ÆÄÀÏ·Î ¹èÄ¡(deployment) ¼³Á¤À» ¿ÜºÎÈ ÇÏ´Â ¹æ¹ý, ºóÀÇ »ý¸íÁֱ⸦ °ü¸®ÇÏ´Â ¹æ¹ý µîÀ» ¾Ë°Ô µÈ´Ù.
ºñÁî´Ï½º¸¦ ¹´Â °Í°ú °ü·ÃµÈ ³»¿ëÀÌ springÀÇ ÇÙ½ÉÀÌ ¾Æ´Ò±î ÇÑ´Ù.
Spring ÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇϱâ À§ÇØ ºóÀ» ¼³Á¤ ÇÒ ¶§¿¡´Â, Ç×»ó spring ÄÁÅ×À̳ʿ¡ ¾î¶² Áö½Ã»çÇ×À» ±â¼úÇØ¾ß ÇÑ´Ù. µû¶ó¼ ÄÁÅ×À̳ʸ¦ ¾Ë¸é, ºóÀÌ ¾î¶»°Ô °ü¸®µÇ´ÂÁö¸¦ ÀÌÇØÇϴµ¥ µµ¿òÀÌ µÇ±â¶§¹®¿¡ ÄÁÅ×À̳ʸ¦ ¾Ë¾Æº¸ÀÚ.
ÄÁÅ×À̳ʴ spring ÇÁ·¹ÀÓ¿öÅ©ÀÇ ÇÙ½ÉÀÌ´Ù. Spring ÄÁÅ×À̳ʴ Á¦¾î¿ªÇà(IOC)À» »ç¿ëÇØ ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸¼ºÇÏ´Â ÄÄÆ÷³ÍÆ®¸¦ °ü¸®ÇÑ´Ù. ¿©±â¼ Çù·ÂÇÏ´Â ÄÄÆ÷³ÍÆ®°£ÀÇ ¿¬°ü°ü°è¸¦ »ý¼ºÇÏ´Â °ÍÀ» Æ÷ÇÔÇÑ´Ù. ÀÌ´Â °´Ã¼´Â Á»´õ ¸íÈ®ÇÏ°Ô ÀÌÇà ÇÒ ¼ö ÀÖ°í, Àç»ç¿ëÀÌ °¡´ÉÇØÁö¸ç, ´ÜÀ§ Å×½ºÆ®°¡ ½¬¿öÁø´Ù°í ÇÑ´Ù.
SpringÀº ±âº» ÄÁÅ×ÀÌ³Ê 2°³
org.springframework.beans.factory.BeanFactory ÀÎÅͳ×À̽º·Î Á¤ÀÇµÈ ºóÆÑÅ丮
: ±âº»ÀûÀÎ ÀÇÁ¸¼º ÁÖÀÔ Áö¿ø
org.springframework.context.ApplicationContext ÀÎÅͳ×À̽º·Î Á¤ÀǵǴ ¾ÖÇø®ÄÉÀÌ¼Ç ÄÁÅؽºÆ®
: ÇÁ·ÎÆÛƼ ÆÄÀÏÀÇ ÅؽºÆ® ¸Þ½ÃÁö Çؼ®, ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ© ¼ºñ½º Á¦°ø
±× ¿Ü¿¡ ´Ù¼ö Á¸ÀçÇÑ´Ù. ±×¸®°í ºóÆÑÅ丮¿Í ¾ÖÇø®ÄÉÀÌ¼Ç ÄÁÅؽºÆ®¸¦ ¸ðµÎ ÄÁÅ×À̳ʶó ¿ë¾î ÇÑ´Ù.
1. ºó ÆÑÅ丮
- ºóÀ» »ý¼ºÇÏ°í ºÐ¹èÇϴ åÀÓÀ» Áö´Â Ŭ·¡½ºÀÌ°í ÆÑÅ丮 µðÀÚÀÎ ÆÐÅÏÀ» ±¸ÇöÇÑ °ÍÀÌ´Ù.
( ÆÑÅ丮 ÆÐÅÏÀº °´Ã¼¸¦ »ý¼ºÇÏ°í ºÐ¹èÇÏ´Â ÆÐÅÏÀÌ°í ÀÚ¼¼ÇÑ°ÍÀº ½º½º·Î¡¦^^)
ºóÆÑÅ丮´Â ¾ÖÇø®ÄÉÀ̼dz»ÀÇ ¸¹Àº °´Ã¼¿¡ ´ëÇØ ¾Ë°í Àֱ⠶§¹®¿¡ °´Ã¼µéÀ» ÀνºÅϽºÈÇÒ¶§ Çù¾÷ÇÏ´Â °´Ã¼ °£ÀÇ ¿¬°ü°ü°è¸¦ »ý¼º½ÃÅ°´Â °ÍÀÌ °¡´ÉÇÏ´Ù.(ÀÌ ¸»Àº °´Ã¼µé°£ÀÇ °ü°è¸¦ Á¤ÀÇÇÏ´Â ¹«¾ù°¡°¡ ÇÊ¿äÇÏ´Â ¸»ÀÌ´Ù.)
ÀÌ·¸°Ô ÇÏ´Â ÀÌÀ¯´Â ºó ÀڽŰú ºóÀÇ Å¬¶óÀ̾ðÆ®·ÎºÎÅÍ ¼³Á¤À̶ó´Â ÀÛ¾÷ÀÌ ¾ø´Ù. ±×·Î ÀÎÇÏ¿© ºóÆÑÅ丮°¡ °´Ã¼¸¦ ºÐ¹èÇÏ´Â ½ÃÁ¡¿¡¼´Â ±× °´Ã¼µéÀÌ ¿ÏÀüÈ÷ ¼³Á¤µÈ »óÅÂÀ̸ç, Çù¾÷ÇÏ´Â °´Ã¼µé³¢¸® ÀνÄÇÏ°í ÀÖ°í °ð¹Ù·Î »ç¿ëÇÒ ¼ö ÀÖ´Â »óÅÂÀÎ °ÍÀÌ´Ù. ¶Ç ºóÆÑÅ丮´Â Ä¿½ºÅÒ ÃʱâÈ ¸Þ¼Òµå¿Í ¼Ò¸ê ¸Þ¼Òµå¸¦ È£ÃâÇÔÀ¸·Î½á ºóÀÇ »ý¸íÁֱ⿡ °³ÀÔÇÒ ¼ö ÀÖ´Ù.
SpringÀÇ ´Ù¾çÇÑ BeanFactory ±¸Çö Ŭ·¡½º Áß °¡Àå À¯¿ëÇÑ °ÍÀº org.springframework.beans.factory.xml.XmlBeanFactory ·Î¼ xml ÆÄÀÏ¿¡ ±â¼úµÇ¾î ÀÖ´Â Á¤ÀǸ¦ ¹ÙÅÁÀ¸·Î ºóÀ» ·ÎµùÇÑ´Ù.
BeanFactory factory = new XmlBeanFactory(new FileSystemResource("beans.xml"));
À§ ÄÚµå´Â ºó ÆÑÅ丮¿¡°Ô XML ÆÄÀϷκÎÅÍ ºó¿¡ ´ëÇÑ Á¤ÀǸ¦ Àоî¿À¶ó°í ¾Ë·ÁÁØ´Ù. ±×·¯³ª ºó ÆÑÅ丮°¡ ºóÀ» ÀνºÅϽºÈÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ºóÀº ºó ÆÑÅ丮¿¡ "´Ê°Ô ·Îµù"(lazy loading)µÇ´Âµ¥, ÀÌ ¸»Àº ºó ÆÑÅ丮°¡ ºóÀÇ Á¤ÀÇ(ºó°ú ±× Ư¼º¿¡ ´ëÇÑ ¼³¸í)´Â Áï½Ã ·ÎµùÇÏ´Â ¹Ý¸é, ºó ÀÚü°¡ ÇÊ¿äÇϱ⠵DZâ Àü±îÁö´Â ÀνºÅϽºÈÇÏÁö ¾Ê´Â´Ù´Â Àǹ̴Ù.
ºó ÆÑÅ丮·ÎºÎÅÍ ºóÀ» ¾ð¾î¿À±â À§Çؼ´Â ¾Æ·¡¿Í °°´Ù.
MyBean myBean = (MyBean) factory.getBean("myBean");
getBean(); ÀÌ È£ÃâµÇ¸é, ÆÑÅ丮´Â ÀÇÁ¸¼º ÁÖÀÔÀ» ÀÌ¿ëÇØ ºóÀ» ÀνºÅϽºÈÇÏ°í ºóÀÇ Æ¯¼º(ºóÀÇ set ¸Þ¼Òµå)À» ¼³Á¤Çϱ⠽ÃÀÛÇÑ´Ù. ÀÌ·¸°Ô Çؼ ½ºÇÁ¸µÄÁÅ×ÀÌ³Ê ¾È¿¡¼ÀÇ ºóÀÇ ÀÏ»ýÀÌ ½ÃÀ۵ȴÙ.
2. ¾ÖÇø®ÄÉÀÌ¼Ç ÄÁÅؽºÆ®
Ç¥¸éÀûÀ¸·Î´Â ApplicationContext´Â BeanFactory¿Í »ó´çÈ÷ ºñ½ÁÇÏ´Ù. µÑ ´Ù ºóÀ» ·ÎµùÇÏ°í ºóµéÀ» ¹¾îÁÖ¸ç, ¿äû¿¡ µû¶ó ºóÀ» ºÐ¹èÇÑ´Ù. Áï, ApplicationContext ÀÎÅÍÆäÀ̽º°¡ BeanFactory ÀÎÅÍÆäÀ̽º¸¦ È®ÀåÇÑ °ÍÀÌ´Ù. ¶ÇÇÑ getBean() ¸Þ¼Òµå¸¦ »ç¿ëÇØ ApplicationContext ·ÎºÎÅÍ ºóÀ» ¾òÀ» ¼ö ÀÖ´Ù.
Â÷ÀÌÁ¡Àº ºó ÆÑÅ丮´Â ¸ðµç ºóÀ» ´Ê°Ô ·Îµù(lazy loading)Çϴµ¥, ¾ÖÇø®ÄÉÀÌ¼Ç ÄÁÅؽºÆ®´Â ÄÁÅؽºÆ®¸¦ ½ÃÀÛ½Ãų¶§ ¸ðµç ½ÌŬÅæ ºóÀ» ¹Ì¸® ·Îµù(preloading)ÇÔÀ¸·Î½á ±× ºóÀÌ ÇÊ¿äÇÒ¶§ Áï½Ã »ç¿ëµÉ¼ö ÀÖµµ·Ï º¸ÀåÇØ ÁØ´Ù. Áï, ºóÀÌ »ý¼ºµÇ±â¸¦ ±â´Ù¸± ÇÊ¿ä°¡ ¾ø´Ù´Â °ÍÀÌ´Ù.
ÇÏÁö¸¸ ¸ðµç °´Ã¼¸¦ ½ÌŬÅæÀ¸·Î »ý¼ºÇØ ³õ´Â´ÙÁö¸¸ °´Ã¼°¡ ¸¹¾ÆÁö¸é ¹«°Å¿ï²¨¶ó´Â »ý°¢ÀÌ µç´Ù. Çغ¸Áö ¾Ê¾Æ¼ ÃßÃøÀÓ.
(½ÌŬÅæÀº µðÀÚÀÎÆÐÅÏÀÇ ÀÏÁ¾ÀÌ´Ù ½º½º·Î¡¦. ^^)
ApplicationContext´Â ´ÙÀ½°ú °°Àº Ãß°¡±â´ÉÀ» Á¦°øÇÑ´Ù.
-.±¹Á¦È(I18N) Áö¿øÀ» Æ÷ÇÔÇØ ÅؽºÆ® ¸Þ½ÃÁö¸¦ Çؼ®ÇÏ´Â ¼ö´Ü Á¦°ø
-.À̹ÌÁö µî°ú °°Àº ÀÚ¿øÀ» ·ÎµùÇÏ´Â ¹ü¿ëÀûÀÎ ¹æ¹ý Á¦°ø
-.¸®½º³Ê·Î µî·ÏµÇ¾îÀÖ´Â ºó¿¡ À̺¥Æ®¸¦ ¹ß»ýÇÒ ¼ö ÀÖÀ½.
BeanFactory´Â ÀÚ¿øÀÌ Á¦¾àÀÌ µû¸£´Â À̵¿Åë½Å±â±â °°Àº »óȲÀÌ ¾Æ´Ï¸é ApplicationContext¸¦ »ç¿ëÇÑ´Ù°í ÇÑ´Ù.
ApplicationContextÀÇ ´Ù¾çÇÑ ±¸Çö Ŭ·¡½º Áß ÀϹÝÀûÀÎ °Í
-.ClasspathXmlApplicationContext : Ŭ·¡½º Æнº¿¡ ÀÖ´Â XML ÆÄÀϷκÎÅÍ ÄÁÅؽºÆ® Á¤ÀǸ¦ ·ÎµùÇϸç, ÄÁÅؽºÆ® Á¤ÀǸ¦ Ŭ·¡½º Æнº¿¡ ÀÖ´Â ÀÚ¿øÀ¸·Î Ãë±ÞÇÑ´Ù.
-.FileSystemXmlApplicationContext : ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÀÖ´Â XML ÆÄÀϷκÎÅÍ ÄÁÅؽºÆ® Á¤ÀǸ¦ ·ÎµùÇÑ´Ù.
-.XmlWebApplicationContext : À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡ Æ÷ÇԵǾîÀÖ´Â XML ÆÄÀϷκÎÅÍ ÄÁÅؽºÆ® Á¤ÀǸ¦ ·ÎµùÇÑ´Ù.
¿¹) ApplicationContext context = new FileSystemXmlApplicationContext("c:/foo.xml");
: ƯÁ¤ÇÑ À§Ä¡¿¡¼ foo.xmlÀ» ãÀ½.
ApplicationContext context = new ClassPathXmlApplicationContext("c:/foo.xml");
: Ŭ·¡½º Æнº¿¡ ÀÖ´Â foo.xml¸¦ ãÀ½.