Áö±Ý±îÁö <property> ¿ä¼Ò¸¦ »ç¿ëÇÏ¿© ºóÀÇ ¸ðµç Ư¼ºÀ» ¸í½ÃÀûÀ¸·Î ¹´Â ¹æ¹ýÀ» ¾Ë¾ÆºÃ´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î, ´ÙÀ½°ú °°ÀÌ ¹°íÀÚ ÇÏ´Â °¢ <bean>¿¡ autowireƯ¼ºÀ» ¼³Á¤ÇÔÀ¸·Î½á springÀ¸·Î ÇÏ¿©±Ý ÀÚµ¿À¸·Î ºóÀ» ¹°Ô ÇÒ ¼ö ÀÖ´Ù.
¾Æ·¡´Â ¸í½ÃÀûÀ¸·Î ºóÀ» ¹´Â ¹æ¹ýÀÌ´Ù.
<bean id="courseService" class="com.springinaction.training.service.CourseServiceImpl">
<property name = "courseDao">
<ref bean="courseDao"/>
</property>
<property name = "studentService">
<ref bean="studentService"/>
</property>
</bean>
´ÙÀ½Àº ÀÚµ¿ ¹±â ¹æ¹ýÀÌ´Ù.
<bean id="courseService" class="com.springinaction.training.service.CourseServiceImpl" autowire="byName">
ÀÚµ¿¹±â¿¡´Â ´ÙÀ½°ú °°Àº ³×°¡Áö Á¾·ù°¡ ÀÖ´Ù.
1. byName : ¹°íÀÚ Çϴ Ư¼ºÀÇ À̸§°ú µ¿ÀÏÇÑ À̸§À̳ª ID¸¦ °¡Áø ºóÀ» ÄÁÅ×À̳ʿ¡¼ ã´Â´Ù. ºóÀ» ãÁö ¸øÇÏ¸é ±× Æ¯¼ºÀº ¹ÀÌÁö ¾ÊÀºÃ¤ ³²´Â´Ù.
2. byType : ¹°íÀÚ Çϴ Ư¼ºÀÇ Å¸ÀÔ°ú µ¿ÀÏÇÑ Å¸ÀÔÀ» °¡Áø ºóÀ» ÄÁÅ×À̳ʿ¡¼ ã´Â´Ù. ºóÀ» ãÁö ¸øÇÏ¸é ±× Æ¯¼ºÀº ¹ÀÌÁö ¾Ê´Â ä·Î ³²°í, Çϳª ÀÌ»óÀÇ ºóÀ» ã°Ô µÇ¸é UnsatisfiedDependencyExceptionÀÌ ´øÁ®Áø´Ù.
3. constructor : ¹°íÀÚ ÇÏ´Â ºóÀÇ »ý¼ºÀÚ Áß ÇϳªÀÇ ÆĶó¹ÌÅÍ¿Í ¸Â´Â Çϳª ÀÌ»óÀÇ ºóÀ» ÄÁÅ×À̳ʿ¡¼ ã´Â´Ù. ¸ðÈ£ÇÑ ºóÀ̳ª »ý¼ºÀÚ°¡ ¹ß°ßµÉ °æ¿ì UnsatisfiedDependencyExceptionÀÌ ´øÁ®Áø´Ù.
4. autodetect : constructor¿¡ ÀÇÇÑ ÀÚµ¿ ¹±â¸¦ ¸ÕÀú ½ÃµµÇÑ ´ÙÀ½, byTypeÀ» ÀÌ¿ëÇÑ´Ù. ¸ðÈ£ÇÔÀÌ ¹ß°ßµÉ °æ¿ì UnsatisfiedDependencyExceptionÀÌ ´øÁ®Áø´Ù.
¸í½ÃÀû ¹±â¿Í ÀÚµ¿ ¹±âÀÇ È¥¿ë
ÀÚµ¿¹±â¸¦ ¼±¾ðÇÏ¿©µµ ´Ù¸¥ Ư¼ºÀ» ¸í½ÃÀûÀ¸·Î ¹À»¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î CourseServiceImpÀÇ courseService´Â ¿©ÀüÈ÷ ÀÚµ¿ ¹±â·Î ÇÏ¸é¼ courseDao Ư¼ºÀ» ¸í½ÃÀûÀ¸·Î ¹À¸·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù.
<bean id="courseService" class="com.springinaction.training.service.CourseServiceImpl" autowire="byName">
<property name = "courseDao">
<ref bean="someOtherCourseDao"/>
</property>
</bean>
ÀÚµ¿ ¹±â¿Í ¸í½ÃÀû ¹±â¸¦ ÇÔ²² »ç¿ëÇÏ´Â °ÍÀº byTypeÀ» »ç¿ëÇØ ÀÚµ¿ ¹±â¸¦ ÇßÀ»¶§ ¹ß»ýÇÒ ¼ö ÀÖ´Â ¸ðÈ£¼ºÀ» ó¸®Çϱâ À§ÇÑ ¹æ¹ýÀ̱⵵ ÇÏ´Ù.
ÀÚµ¿ ¹±â¸¦ ±âº»À¸·Î ¼³Á¤
<bean default-autowire="byName"> ¶ó°í ¼±¾ðÇϸé spring ¼³Á¤ ÆÄÀÏ¿¡ ÀÖ´Â ¸ðµç ºó¿¡ ´ëÇØ ±âº»À¸·Î ÀÚµ¿¹±â°¡ ¼³Á¤µÇ´Â °ÍÀÌ´Ù. ±×¸®°í ƯÁ¤ ºó¿¡ ´ëÇؼ ¸í½ÃÀû ¹±âµµ °¡´ÉÇÏ´Ù.
ÀÚµ¿¹±â¸¦ ÇÒ °ÍÀΰ¡ ¸» °ÍÀΰ¡?
ÀÚµ¿¹±â´Â ºó ¹±â ÆÄÀÏÀ» ÀÛ¼ºÇÒ¶§ ÇÊ¿äÇÑ ¼öµ¿ ¼³Á¤ÀÇ ¾çÀ» Àý°¨½ÃÅ°´Â °·ÂÇÑ ¹æ¹ýÀÌÁö¸¸, ¸î °¡Áö ¹®Á¦¸¦ ¾ß±â ½Ãų ¼öµµ ÀÖ´Ù.
¿¹¸¦ µé¾î studentService ºóÀÌ byNameÀ» »ç¿ëÇÏ¿© ÀÚµ¿ ¹±â°¡ µÇ¾î ÀÖ´Ù°í °¡Á¤ÇØ º¸¸é, studentDao Ư¼ºÀº ÄÁÅ×ÀÌ³Ê ¾È¿¡ studentDao¶ó´Â À̸§ÀÇ ºóÀ¸·Î ÀÚµ¿ ¼³Á¤ µÉ °ÍÀÌ´Ù. ÀÌÁ¦ studentDao Ư¼ºÀÇ À̸§À» studentData·Î º¯°æÇÏ´Â ¸®ÆÑÅ丵À» ÇÏ°íÀÚ ÇÑ´Ù. ¸®ÆÑÅ丵ÀÌ ³¡³ µÚ, ÄÁÅ×À̳ʴ ÀÚµ¿ ¹±â¸¦ À§ÇØ studentDao¶ó´Â À̸§À» °¡Áø ºóÀ» °Ë»öÇÏ·Á ÇÒ °ÍÀÌ´Ù. ºó xml ÆÄÀÏÀ» ¼öÁ¤ÇÏÁö ¾Ê´Â ÇÑ, ÄÁÅ×À̳ʴ ±× À̸§À» °¡Áø ºóÀ» ãÁö ¸øÇÏ¿© ±× Ư¼ºÀº ¹¿©ÁöÁö ¾ÊÀºÃ¤·Î ³²À» °ÍÀ̸ç, studentService ºóÀÌ studentData Ư¼ºÀ» »ç¿ëÇÏ·Á ÇÒ¶§¿¡´Â NullPointerExceptionÀ» ¾ò°Ô µÉ °ÍÀÌ´Ù.
¶ÇÇÑ studentData¶ó´Â À̸§À» °¡Áø ºóÀÌ Á¸ÀçÇÏÁö¸¸, ±×°ÍÀÌ studentData Ư¼º°ú ¹°íÀÚ ÇÏ´Â ºóÀÌ ¾Æ´Ñ °æ¿ì¿¡´Â studentData ºóÀÇ Å¸ÀÔÀÌ ¹«¾ùÀ̳Ŀ¡ µû¶ó, springÀº ±× ºó°úÀÇ ¹±â¸¦ Á¤È®È÷ ¼º°ø ½Ãų¼öµµ ÀÖÀ¸¸ç, ±× °á°ú ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¿¹»óÄ¡ ¸øÇÑ ÀÛµ¿À» ÇÒ ¼öµµ ÀÖ´Â °ÍÀÌ´Ù.