ÀÚ¹Ù¿¡¼´Â Ŭ·¡½º´Â Çϳª ÀÌ»óÀÇ »ý¼ºÀÚ¸¦ °¡Áú¼ö ÀÖ´Ù. »ý¼ºÀÚ¸¦ ÀÌ¿ëÇÏ¿© ÇØ´ç ºóÀ» ¼Ó¼º°ªÀ» ¼ÂÆÃÇÒ¼ö ÀÖ´Ù.
»ý¼ºÀÚ¸¦ ÅëÇØ ¼Ó¼º°ªÀ» ¼ÂÆÃÇÏ´Â °ÍÀº °ÇÑ ÀÇÁ¸¼ºÀ» °¡Áö´Â ¹Ý¸é, ¼¼Å͸¦ ÀÌ¿ëÇÏ¿© ¼ÂÆÃÇÏ´Â °ÍÀº ¾î¶² ¼Ó¼ºÀÌ ÇʼöÀÎÁö ¾Æ´ÑÁö¸¦ ¼³Á¤ÇÒ ¼ö°¡ ¾ø´Â Á¡ÀÌ ¹ß»ýÇÑ´Ù.
¼¼ÅÍ ÁÖÀÔÀÇ °æ¿ì¿¡´Â ÁÖÀÔÇÏ°íÀÚ Çϴ Ư¼ºÀ» <property> ¿ä¼Ò¸¦ »ç¿ëÇÏ¿© Á¤ÀÇÇß´Ù.
»ý¼ºÀÚ ÁÖÀÔÀÇ °æ¿ìµµ ¸¶Âù°¡ÁöÀε¥, ´Ù¸¸ ºóÀÌ ÀνºÅϽºÈµÉ¶§ »ý¼ºÀÚ¿¡ Àü´ÞÇÒ ÀÎÀÚ¸¦ <bean> ÀÇ ÇÏÀ§¿ä¼Ò·Î¼ <constructor-arg>¸¦ »ç¿ëÇÏ¿© ÁöÁ¤ÇÑ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù.
¶ÇÇÑ <constructor-arg>´Â <property> ¿ä¼Ò¿Í´Â ´Þ¸® name ¼Ó¼ºÀ» °®Áö ¾Ê´Â´Ù
´ÙÀ½Àº »ý¼ºÀÚ ÁÖÀÔÀ» »ç¿ëÇÏ´Â ¼³Á¤¿¹Á¦ÀÌ´Ù.
<bean id = "foo"
class="com.springinaction.Foo">
<constructor-arg>
<value>42</value>
</constructor-arg>
</bean>
<bean id = "foo"
class="com.springinaction.Foo">
<constructor-arg>
<ref bean = "bar" />
</constructor-arg>
</bean>
¸ðÈ£ÇÑ »ý¼ºÀÚ ÀÎÀÚÀÇ Ã³¸®
¸¸¾à »ý¼ºÀÚÀÇ ÀÎÀÚµéÀÇ °ªµéÀÌ µ¿ÀÏÇÑ Å¸ÀÔÀ̶ó¸é ¾î¶² ÀÎÀÚ¿¡ ¾î¶²°ªÀ» ³ÖÀ»Áö Spring ÄÁÅ×À̳ʴ ¾î¶»°Ô ¾Ë ¼ö ÀÖÀ»±î?
¿¹Á¦¸¦ º¸¸é
<bean id = "foo"
class="com.springinaction.Foo">
<constructor-arg>
<value>http://www.maning.com </value>
</constructor-arg>
<constructor-arg>
<value>http://www.springinaction.com </value>
</constructor-arg>
</bean>
ºó¿¡¼´Â ´ÙÀ½°ú °°ÀÌ¡¦
public class Foo {
Public Foo(String arg1, java.net.URL arg2){
...
}
}
À̶ó´Â °¡Á¤ÇÏ¿¡¼ º¸ÀÚ.
SpringÀº ºóÀ» ¹À» ¶§ ÀÎÀÚ°ªÀ» ¾î¶»°Ô ÇÒ´çÇÒ±î¿ä?
´äÀº spring Àº org.springframework.beans.factory.UnsatisfiedDependencyExceptionÀ» ´øÁ® »ç¿ëÀÚ¿¡°Ô »ý¼ºÀÚÀÇ ÀÎÀÚ¿¡ ¸ðÈ£ÇÔÀ» ¾Ë·ÁÁØ´Ù.
»ý¼ºÀÚ ÀÎÀÚ¸¦ ´Ù·ê ¼ö ÀÖ´Â ¹æ¹ý¿¡´Â 2°¡Áö Á¸ÀçÇϴµ¥ Çϳª´Â »öÀÎÀ» ÀÌ¿ëÇÏ´Â °Í°ú ŸÀÔÀ» ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù.
1. Index ÀÌ¿ë
<bean id = "foo"
class="com.springinaction.Foo">
<constructor-arg index = "1">
<value>http://www.maning.com </value>
</constructor-arg>
<constructor-arg index = "0">
<value>http://www.springinaction.com </value>
</constructor-arg>
</bean>
Index´Â 0 ºÎÅÍ ½ÃÀÛÀÌ´Ù. Áï 0¹øÀÌ Ã¹¹ø° ÀÎÀÚ°ª¿¡ ÇÒ´ç µÇ°í 1¹ø°°¡ µÎ¹ø° ÀÎÀÚ°ª¿¡ ÇÒ´çµÈ´Ù.
2. Type ÀÌ¿ë
<bean id = "foo"
class="com.springinaction.Foo">
<constructor-arg type = "java.lang.String">
<value>http://www.maning.com </value>
</constructor-arg>
<constructor-arg type = "java.net.URL">
<value>http://www.springinaction.com </value>
</constructor-arg>
</bean>
ÀÎÀÚ¿¡ ¸Â´Â Çü¿¡ ÇÒ´çµÇ¾îÁø´Ù. ¸¸¾à °°Àº ÇüÀÌ 2°³ ÀÌ»ó Á¸ÀçÇÑ´Ù¸é ¹Ýµå½Ã index¸¦ ÀÌ¿ëÇØ¾ß ÇÑ´Ù.
»ý¼ºÀÚ¿Í ¼¼ÅÍ ºñ±³
1. »ý¼ºÀÚÀÇ ÀåÁ¡
- »ý¼ºÀÚ ÁÖÀÔÀº °ÇÑ ÀÇÁ¸¼º °è¾àÀ» °Á¦ÇÑ´Ù. ¿äÄÁµ¥, ºóÀº ¸ðµç ÀÇÁ¸¼º¿¡ ´ëÇØ ÃÑÁ·µÇÁö ¾ÊÀ¸¸é ÀνºÅϽºÈµÉ ¼ö ¾ø´Ù. ÀÏ´Ü ÀνºÅϽºÈµÇ¸é ºóÀº ¿Ïº®ÇÏ°Ô À¯È¿Çϸç Áï½Ã »ç¿ë °¡´ÉÇÑ »óÅ°¡ µÈ´Ù. ¹°·Ð ÀÌ´Â ºóÀÇ »ý¼ºÀÚ°¡ ºóÀÇ ¸ðµç ÀÇÁ¸¼º¿¡ ÇØ´çÇÏ´Â ÆĶó¹ÌÅÍ ¸ñ·ÏÀ» °®°í ÀÖ´Ù´Â °¡Á¤ÇÏ¿¡ ±×·¸´Ù.
- ºóÀÇ ¸ðµç ÀÇÁ¸¼ºÀÌ »ý¼ºÀÚ¸¦ ÅëÇØ ¼³Á¤µÇ±â ¶§¹®¿¡, ºÒÇÊ¿äÇÑ ¼¼ÅÍ ¸Þ¼Òµå¸¦ °¡Áú ÇÊ¿ä°¡ ¾ø´Ù. ÀÌ´Â ÄÚµåÀÇ ¾çÀ» ÃÖ¼Ò·Î À¯Áö½ÃÄÑÁÖ´Â ÀåÁ¡ÀÌ ÀÖ´Ù.
- ¿ÀÁ÷ »ý¼ºÀÚ¸¦ ÅëÇؼ¸¸ Ư¼ºÀ» ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï ÇÔÀ¸·Î½á, ÀÚ¿¬È÷ ±× Ư¼ºÀ» º¯°æµÇÁö ¾Ê´Â Ư¼ºÀÌ µÇ´Â È¿°ú°¡ ÀÖ´Ù.
2. »ý¼ºÀÚÀÇ ´ÜÁ¡
- ºóÀÌ ¿©·¯ °³ÀÇ ÀÇÁ¸¼ºÀ» °®´Â °æ¿ì¿¡´Â »ý¼ºÀÚÀÇ ÆĶó¹ÌÅÍ ¸ñ·ÏÀÌ ¸Å¿ì ±æ¾îÁø´Ù.
- À¯È¿ÇÑ °´Ã¼¸¦ ±¸¼ºÇÏ´Â ´Ù¾çÇÑ ¹æ¹ýÀÌ Á¸ÀçÇÑ´Ù¸é, ¿ÀÁ÷ ÆĶó¹ÌÅÍÀÇ ¼ö¿Í ŸÀÔ¿¡ ÀÇÇØ »ý¼ºÀÚÀÇ ½Ã±×´Ïó(signature)°¡ ´Ù¾çÇØÁú °ÍÀ̹ǷΠƯÁ¤ÇÑ »ý¼ºÀÚ¸¦ ½Äº°ÇϱⰡ ¾î·Á¿öÁø´Ù.
- ¸¸¾à »ý¼ºÀÚ°¡ µ¿ÀÏÇÑ Å¸ÀÔÀÇ µÎ°³ ÀÌ»óÀÇ ÆĶó¹ÌÅ͸¦ ÃëÇÑ´Ù¸é, °¢ ÆĶó¹ÌÅÍÀÇ ¸ñÀûÀ» ÆľÇÇϱ⠾î·Á¿öÁú °ÍÀÌ´Ù.
- »ý¼ºÀÚ ÁÖÀÔÀº ±× ÀÚü·Î Áï½Ã »ó¼Ó¿¡¼ »ç¿ëÇÒ ¼ö ¾ø´Ù. ºÎ¸ð °´Ã¼ÀÇ private Ư¼ºÀ» ¼³Á¤Çϱ⠿ìÇؼ´Â ºóÀÇ »ý¼ºÀÚ¿¡¼ Ç×»ó ÆĶó¹ÌÅ͸¦ super()·Î ³Ñ°Ü¾ß ÇÒ °ÍÀÌ´Ù.
¼¼ÅÍ¿Í »ý¼ºÀÚÁß ¾î´À°ÍÀ» ¼±ÅÃÇصµ »ó°üÀÌ ¾ø´Ù. °¡Àå ÁÁÀº ¹æ¾ÈÀº spring ¼³Á¤ ÆÄÀÏÀÇ ¸íÈ®ÇÏ°Ô ¸¸µéÁֱ⸸ ÇÏ¸é µÈ´Ù.
Âü°í·Î À§ÀÇ Àå´ÜÁ¡À» ÆľÇÇÏ¿© ÁÁÀº°ÍÀ» ÃëÇÏ´Â ¹æ¹ýÀÌ ¿ì¼±ÀûÀ¸·Î ÇÏ°í ´ÜÁ¡ÀÌ »ý±âÁö ¾Êµµ·Ï ¼³Á¤ÆÄÀÏÀ» ¸¸µé¸é µÉ°Í °°´Ù.