ÀÌÁ¦ ½ºÇÁ¸µ ÇÁ·¹ÀÓ¿öÅ©´Â ÀÚ¹Ù °³¹ßÀÚÀÇ Çʼö Áö½ÄÀÌ µÇ¾úÀ¸¸ç, ½ºÇÁ¸µ 3¿¡¼´Â SpEL(Spring Expression Language), IoC ÄÁÅ×À̳ʸ¦ À§ÇÑ »õ·Î¿î ¾Ö³ÊÅ×À̼Ç, ±×¸®°í REST¸¦ À§ÇÑ À¯¿ëÇÑ Áö¿ø ±â´É µîÀÌ Ãß°¡µÆ´Ù. ½ºÇÁ¸µÀ» ¾Ë°í ½Í°Å³ª ½ºÇÁ¸µ 3.0ÀÇ »õ·Î¿î ±â´ÉÀ» ÆľÇÇÏ°í ½Í´Ù¸é ÀÌ Ã¥ÀÌ ÃÖ¼±ÀÇ ¼±ÅÃÀÌ µÉ °ÍÀÌ´Ù.
¡º½ºÇÁ¸µ ÀÎ ¾×¼Ç Á¦3ÆÇ¡» ¿ª½Ã º£½ºÆ®¼¿·¯ÀÎ 1, 2ÆÇÀÇ ½Ç¿ëÀûÀÌ°í ½Ç½À À§ÁÖÀÇ ±¸¼º¹æ½ÄÀ» µû¸£°í ÀÖ´Ù. ÀúÀÚÀÎ Å©·¹ÀÌ±× ¿ùÁî´Â ½Ç¿ëÀûÀÎ ±â¼ú°ú ±â´É¿¡ ´ëÇÑ ¼³¸íÀ» Àç¹ÌÀÖ°í À¯ÄèÇÏ°Ô Ç®¾î³»´Â Àç´ÉÀÌ ÀÖ´Ù. Á¦3ÆÇ¿¡¼´Â ½ºÇÁ¸µ 3.0ÀÇ °¡Àå Áß¿äÇÑ Ãø¸éÀ̶ó ÇÒ ¼ö ÀÖ´Â REST, ¿ø°Ý ¼ºñ½º, ¸Þ½Ã¡, º¸¾È, MVC, À¥ Ç÷ΠµîÀ» ÁýÁßÀûÀ¸·Î ´Ù·é´Ù.
ÃâÆÇ»ç ¼Æò
100,000¸íÀÌ ³Ñ´Â °³¹ßÀÚ°¡ ÀÌ Ã¥À» ÅëÇØ ½ºÇÁ¸µ¿¡ ´«¶¹´Ù!
¾Æ¸¶Á¸ No. 1 ½ºÇÁ¸µ ¼Àû!
ÀÌÁ¦ ½ºÇÁ¸µ ÇÁ·¹ÀÓ¿öÅ©´Â ÀÚ¹Ù °³¹ßÀÚÀÇ Çʼö Áö½ÄÀÌ µÇ¾úÀ¸¸ç, ½ºÇÁ¸µ 3¿¡¼´Â SpEL(Spring Expression Language), IoC ÄÁÅ×À̳ʸ¦ À§ÇÑ »õ·Î¿î ¾Ö³ÊÅ×À̼Ç, ±×¸®°í REST¸¦ À§ÇÑ À¯¿ëÇÑ Áö¿ø ±â´É µîÀÌ Ãß°¡µÆ´Ù. ½ºÇÁ¸µÀ» ¾Ë°í ½Í°Å³ª ½ºÇÁ¸µ 3.0ÀÇ »õ·Î¿î ±â´ÉÀ» ÆľÇÇÏ°í ½Í´Ù¸é ÀÌ Ã¥ÀÌ ÃÖ¼±ÀÇ ¼±ÅÃÀÌ µÉ °ÍÀÌ´Ù.
¡º½ºÇÁ¸µ ÀÎ ¾×¼Ç Á¦3ÆÇ¡» ¿ª½Ã º£½ºÆ®¼¿·¯ÀÎ 1, 2ÆÇÀÇ ½Ç¿ëÀûÀÌ°í ½Ç½À À§ÁÖÀÇ ±¸¼º¹æ½ÄÀ» µû¸£°í ÀÖ´Ù. ÀúÀÚÀÎ Å©·¹ÀÌ±× ¿ùÁî´Â ½Ç¿ëÀûÀÎ ±â¼ú°ú ±â´É¿¡ ´ëÇÑ ¼³¸íÀ» Àç¹ÌÀÖ°í À¯ÄèÇÏ°Ô Ç®¾î³»´Â Àç´ÉÀÌ ÀÖ´Ù. Á¦3ÆÇ¿¡¼´Â ½ºÇÁ¸µ 3.0ÀÇ °¡Àå Áß¿äÇÑ Ãø¸éÀ̶ó ÇÒ ¼ö ÀÖ´Â REST, ¿ø°Ý ¼ºñ½º, ¸Þ½Ã¡, º¸¾È, MVC, À¥ Ç÷ΠµîÀ» ÁýÁßÀûÀ¸·Î ´Ù·é´Ù.
ÀÌ Ã¥ÀÇ ÁÖ¿ä ³»¿ëÀº ´ÙÀ½°ú °°´Ù.
¾Ö³ÊÅ×À̼ÇÀ» ÀÌ¿ëÇÑ ¼³Á¤ ÀÛ¾÷ÀÇ °£¼ÒÈ
RESTful ¸®¼Ò½º ÀÛ¾÷
SpEL(Spring Expression Language)
º¸¾È, À¥ Ç÷Πµî
´ë»ó µ¶ÀÚ
ÀÌ Ã¥Àº ¸ðµç ÀÚ¹Ù °³¹ßÀÚ¸¦ ´ë»óÀ¸·Î ÇÏÁö¸¸ ¿£ÅÍÇÁ¶óÀÌÁî °³¹ßÀÚ¿¡°Ô ƯÈ÷ À¯¿ëÇÏ´Ù. °¢ ÀåÀ» °ÅÄ¡¸é¼ ÄÚµå ¿¹Á¦ÀÇ º¹Àâµµ¸¦ ¼¼È÷ ´Ã·Á°¡°ÚÁö¸¸, ½ºÇÁ¸µÀÇ ÁøÁ¤ÇÑ ÈûÀº ¿£ÅÍÇÁ¶óÀÌÁî ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀ» ´õ ½±°Ô ÇÏ´Â µ¥ ÀÖ´Ù. µû¶ó¼ ¿£ÅÍÇÁ¶óÀÌÁî °³¹ßÀÚµéÀº ÀÌ Ã¥¿¡ ÀÖ´Â ¿¹Á¦µéÀÇ Áø°¡¸¦ ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù.
ÀÌ Ã¥ÀÇ ±¸¼º
1ºÎ¿¡¼´Â ½ºÇÁ¸µ ÇÁ·¹ÀÓ¿öÅ©ÀÇ °¡Àå ÇÙ½ÉÀûÀÎ µÎ °³ÀÇ ±â´ÉÀÎ Á¾¼Ó°´Ã¼ ÁÖÀÔ(DI: Dependency Injection)°ú ¾Ö½ºÆåÆ® ÁöÇâ ÇÁ·Î±×·¡¹Ö(AOP: Aspect-Oriented Programming)À» ¾Ë¾Æº»´Ù. ÀÌ µÑÀº ÀÌ Ã¥¿¡¼ °è¼Ó »ç¿ëµÇ´Â ½ºÇÁ¸µÀÇ ±âº»°³³äÀ¸·Î Àß ÀÌÇØÇØ¾ß ÇÑ´Ù.
1Àå¿¡¼´Â DI ¹× AOP¸¦ ¼Ò°³ÇÏ°í, ´À½¼ÇÏ°Ô °áÇÕµÈ ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ´Â µ¥ À̵éÀÌ ¾î¶² ¿ªÇÒÀ» ÇÏ´ÂÁö »ìÆ캻´Ù.
2Àå¿¡¼´Â DI¸¦ ÀÌ¿ëÇØ ¾ÖÇø®ÄÉÀÌ¼Ç °´Ã¼¸¦ ±¸¼ºÇÏ°í ¿¬°ü Áþ´Â ¹æ¹ýÀ» Á» ´õ ÀÚ¼¼È÷ »ìÆ캻´Ù. ¶ÇÇÑ ´À½¼ÇÏ°Ô °áÇÕµÈ ÄÄÆ÷³ÍÆ®¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ý°ú XMLÀ» ÀÌ¿ëÇØ ½ºÇÁ¸µ ÄÁÅ×ÀÌ³Ê ³»¿¡¼ Á¾¼Ó°´Ã¼¿Í ÇÁ·ÎÆÛƼ¸¦ ¿¬°áÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù.
½ºÇÁ¸µ XML ¼³Á¤ÀÇ ±âº» »çÇ׿¡ Àͼ÷ÇØÁ³´Ù¸é, 3Àå¿¡¼´Â XML ¼³Á¤À» ¾Ö³ÊÅ×ÀÌ¼Ç ±â¹ÝÀÇ ¹æ½ÄÀ¸·Î ³ªÅ¸³»´Â ¹æ¹ýÀ» ¾Ë¾Æº»´Ù.
4Àå¿¡¼´Â ½ºÇÁ¸µ AOP¸¦ ÀÌ¿ëÇØ ¼ºñ½ºÇÏ´Â °´Ã¼¿¡¼ Ⱦ´Ü°ü½É»ç(cross-cutting concerns)¸¦ ¼·Î ºÐ¸®ÇÏ´Â ¹æ¹ýÀ» »ìÆ캻´Ù. ¶ÇÇÑ 4Àå ÀÌÈÄ¿¡¼´Â ½ºÇÁ¸µ AOP¸¦ ÀÌ¿ëÇØ Æ®·£Àè¼ÇÀ̳ª º¸¾È, ij½Ã µîÀÇ ¼ºñ½º¸¦ ¼±¾ðÀû ¹æ½ÄÀ¸·Î °³¹ßÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇϴµ¥, 4ÀåÀº ÀÌ·¯ÇÑ ³»¿ëÀÇ Åä´ë°¡ µÇ´Â Áß¿äÇÑ ÀåÀÌ´Ù.
2ºÎ¿¡¼´Â 1ºÎ¿¡¼ ¼Ò°³ÇÑ DI¿Í AOP ±â´ÉÀ» ¹ÙÅÁÀ¸·Î ±¸¼ºµÇ´Âµ¥, ¾ÖÇø®ÄÉÀ̼ÇÀÇ °øÅëÀûÀÎ ¿ä¼Ò¸¦ ±¸¼ºÇϱâ À§ÇØ ÀÌ¿Í °°Àº °³³äÀ» ¾î¶»°Ô Àû¿ëÇÏ´ÂÁö ¾Ë¾Æº»´Ù.
5Àå¿¡¼´Â µ¥ÀÌÅÍ ¿µ¼Ó¼º¿¡ ´ëÇÑ ½ºÇÁ¸µ Áö¿ø»çÇ×À» ´Ù·é´Ù. ¿ì¼± JDBC¿Í °ü·ÃµÈ ¼ö¸¹Àº »óÅõÀûÀÎ Äڵ带 Á¦°ÅÇÏ´Â µ¥ µµ¿òÀ» ÁÖ´Â ½ºÇÁ¸µÀÇ JDBC Áö¿ø»çÇ×À» ¼Ò°³ÇÑ´Ù. ±×¸®°í ½ºÇÁ¸µÀÌ ÇÏÀ̹ö³×ÀÌÆ®(Hibernate)³ª ÀÚ¹Ù Æ۽ýºÅϽº API(JPA: Java Persistence API)¿Í °°Àº Æ۽ýºÅϽº ÇÁ·¹ÀÓ¿öÅ©¿Í ¾î¶»°Ô ÅëÇÕÇÏ´ÂÁö »ìÆ캻´Ù.
6Àå¿¡¼´Â 5ÀåÀÇ ºÎÁ·ÇÑ ºÎºÐÀ» ä¿öÁØ´Ù. 6ÀåÀÇ ÁÖÁ¦´Â Æ®·£Àè¼ÇÀ¸·Î, µ¥ÀÌÅͺ£À̽º¿¡¼ ¹«°á¼ºÀ» º¸ÀåÇϱâ À§ÇØ ½ºÇÁ¸µÀÇ Æ®·£Àè¼Ç Áö¿ø»çÇ×À» È°¿ëÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù. ¶ÇÇÑ AOP¸¦ ÀÌ¿ëÇØ °£´ÜÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç °´Ã¼¿¡ ¼±¾ðÀû Æ®·£Àè¼ÇÀÇ ´É·ÂÀ» ºÎ¿©ÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù.
7Àå¿¡¼´Â ½ºÇÁ¸µÀÇ MVC À¥ ÇÁ·¹ÀÓ¿öÅ©¸¦ ¼Ò°³ÇÑ´Ù. ½ºÇÁ¸µÀÌ À¥ ÆĶó¹ÌÅ͸¦ ºñÁî´Ï½º °´Ã¼¿¡ Åõ¸íÇÏ°Ô ¹ÝÀεåÇÏ°í µ¿½Ã¿¡ À¯È¿¼º °ËÁõ°ú ¿¡·¯ 󸮸¦ Á¦°øÇÏ´Â ¹æ¹ýÀ» »ìÆ캻´Ù. ¶ÇÇÑ ½ºÇÁ¸µ MVC ÄÁÆ®·Ñ·¯¸¦ ÀÌ¿ëÇØ À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡ ±â´ÉÀ» Ãß°¡ÇÏ´Â ÀÛ¾÷ÀÌ ¾ó¸¶³ª ½¬¿îÁöµµ ¾Ë°Ô µÈ´Ù.
8Àå¿¡¼´Â ½ºÇÁ¸µ À¥ Ç÷Î(Web Flow)¸¦ »ìÆ캻´Ù. ½ºÇÁ¸µ À¥ Ç÷δ ½ºÇÁ¸µ MVCÀÇ È®ÀåÆÇÀ¸·Î, ´ëÈÇü À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ °³¹ßÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù. ±×¸®°í ƯÁ¤ È帧À» ÅëÇØ »ç¿ëÀÚ¸¦ ¾È³»ÇÏ´Â À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¾î¶»°Ô ±¸¼ºÇÏ´ÂÁö ¾Ë¾Æº»´Ù.
9Àå¿¡¼´Â ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼(Spring Security)¸¦ ÀÌ¿ëÇØ ¾ÖÇø®ÄÉÀ̼ǿ¡ º¸¾ÈÀ» Àû¿ëÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº»´Ù. ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼°¡ ¼ºí¸´ ÇÊÅ͸¦ ÀÌ¿ëÇÑ À¥ ¿äû ·¹º§°ú ½ºÇÁ¸µ AOP¸¦ ÀÌ¿ëÇÑ ¸Þ¼Òµå ·¹º§¿¡¼ ¾î¶»°Ô ¾ÖÇø®ÄÉÀ̼ÇÀ» º¸È£ÇÏ´ÂÁö ¾Ë¾Æº»´Ù.
2ºÎ¿¡¼ ¹è¿î ³»¿ëÀ» ÅëÇØ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µç ÈÄ¿¡ ´Ù¸¥ ¾ÖÇø®ÄÉÀ̼ÇÀ̳ª ¼ºñ½º¿Í ÅëÇÕÇغ»´Ù. 3ºÎ¿¡¼´Â À̸¦ ¼öÇàÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù.
10Àå¿¡¼´Â ¾ÖÇø®ÄÉÀÌ¼Ç °´Ã¼¸¦ ¿ø°Ý ¼ºñ½º·Î ³ëÃâÇÏ´Â ¹æ¹ýÀ» »ìÆ캻´Ù. ¶ÇÇÑ ¿ø°Ý ¼ºñ½º¸¦ ¸¶Ä¡ °°Àº ¾ÖÇø®ÄÉÀ̼ǿ¡ ÀÖ´Â ÀÏ¹Ý °´Ã¼¿Í ´Ù¸§¾øÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» ´Ù·é´Ù. ÀÌ Àå¿¡¼ ´Ù·ç´Â ¸®¸ðÆà ±â¼ú¿¡´Â RMI, Hessian°ú Burlap, SOAP ±â¹ÝÀÇ À¥ ¼ºñ½º, ±×¸®°í ½ºÇÁ¸µ °íÀ¯ÀÇ HttpInvoker°¡ Æ÷ÇԵȴÙ.
11Àå¿¡¼´Â ½ºÇÁ¸µ MVC·Î ´Ù½Ã µ¹¾Æ¿Í ½ºÇÁ¸µ MVC¸¦ ÀÌ¿ëÇØ ¾ÖÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅ͸¦ RESTful ¸®¼Ò½º·Î ³ëÃâÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº»´Ù. ÀÌ¿Ü¿¡µµ ½ºÇÁ¸µÀÇ RestTemplateÀ¸·Î REST Ŭ¶óÀ̾ðÆ®¸¦ °³¹ßÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù.
12Àå¿¡¼´Â JMS·Î ºñµ¿±â½Ä ¸Þ½ÃÁö¸¦ ¼Û½ÅÇÏ°í ¼ö½ÅÇϱâ À§ÇÑ ½ºÇÁ¸µ È°¿ë¹ýÀ» »ìÆ캻´Ù. ½ºÇÁ¸µÀ» ÀÌ¿ëÇÑ ±âº»ÀûÀÎ JMS ÀÛ¾÷ ¿Ü¿¡µµ ¿ÀÇ ¼Ò½ºÀÎ ¸µ°í(Lingo) ÇÁ·ÎÁ§Æ®¸¦ ÀÌ¿ëÇØ JMS¸¦ ÅëÇØ ºñµ¿±â½Ä ¼ºñ½º¸¦ ³ëÃâÇÏ°í »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù.
13Àå¿¡¼´Â ½ºÇÁ¸µÀ» ÀÌ¿ëÇØ JMX¸¦ ÀÌ¿ëÇÑ ½ºÇÁ¸µ ºó °ü¸®¸¦ ¾Ë¾Æº»´Ù. °ü¸® ºóÀ¸·Î ½ºÇÁ¸µ ºóÀ» ³ëÃâÇÏ´Â ¹æ¹ý, ½ºÇÁ¸µ ºóÀ» ¿ø°ÝÀ¸·Î °ü¸®ÇÏ´Â ¹æ¹ý, ±×¸®°í JMX ÅëÁö¸¦ ó¸®ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº»´Ù.
̵̧ȍ
¡°»ç½Ç»ó ½ºÇÁ¸µ¿¡ ´ëÇÑ ÂüÁ¶¹®¼´Ù!¡± _ Dan Dobrin, CIBC
¡°ºô·ÁÁÙ ¼ö ¾ø´Â À¯ÀÏÇÑ Ã¥. Ç×»ó ¿·¿¡ µÎ°í Àд å!¡± _ Josh Devins, Nokia
¡°½ºÇÁ¸µÀÇ ±âº» °³³ä°ú ¹æ´ëÇÑ ³»¿ëÀ» ¸ðµÎ ´Ù·é Ã¥!¡± _ Chad Davis, ¡ºStruts 2 in Action¡» ÀúÀÚ
¡°ÈǸ¢ÇÑ ÀúÀÚ¿Í ÈǸ¢ÇÑ ³»¿ë!¡± _ Robert Hanson, ¡ºGWT in Action¡» ÀúÀÚ
¡°±â¼ú°ú À¯¸ÓÀÇ ¿Ïº®ÇÑ Á¶ÇÕ!¡± _ Valentin Crettaz, Goomzee
¡°µ¶º¸ÀûÀΠåÀÌ´Ù. ÈǸ¢ÇÑ ÁýÇÊÀÌ´Ù. ¿¹Á¦´Â ¸Å¿ì ¸íÈ®ÇÏ°í µû¶óÇϱ⠽±´Ù.¡± _ Sunil Parikh, DZone
¡°º° ´Ù¼¸ °³ ¸¸Á¡¿¡ º° ´Ù¼¸ °³´Ù. ÃÖ°íÀÇ ¾È³»¼´Ù.¡± _ Nicola Pedot, Java User Group Trento
¡°½ºÇÁ¸µÀ» ÅëÇØ ´õ ´Ü¼øÇÏ°í À¯Áöº¸¼ö°¡ ½¬¿î Äڵ带 ÀÛ¼ºÇϸé ÇÙ½É ºñÁî´Ï½º ´ÏÁî¿¡ ÁýÁßÇÒ ¼ö ÀÖ´Ù.¡± _ Springframework.org
¡°´ë´ÜÈ÷ Àб⠽¬¿î ¹é°ú»çÀü. ¸ðµç ºÎºÐ º° ´Ù¼¸ °³!¡± _ JavaLobby.org
¡°¶Ù¾î³ ±¸¼º°ú À¯Ã¢ÇÑ ¼³¸í!¡± _ Internet Bookwatch
¡°Àб⠽±´Ù. Àç¹Ìµµ ÀÖ´Ù.¡± _ Books-On-Line
¡°Èñ±Í µµ¼!¡± _ Computing Reviews
¡°½ºÇÁ¸µ¿¡ ´ëÇÑ ÃÖ°íÀÇ ¾È³»¼!¡± _ Taruvai Subramaniam, Amazon µ¶ÀÚ
¡°Á¤¸»·Î ½ºÇÁ¸µ¿¡ ¶Ù¾îµé ¼ö ÀÖ°Ô µÇ¾ú´Ù.¡± _ Patrick Steger, Z?lke Engineering
¡°Àç¹Ì¿Í ÇÔ²² ºüÁ®µé°Ô ¸¸µç´Ù. °³¹ßÀÚ°¡ ¾Ë¾Æ¾ß ÇÏ´Â Çʼö ³»¿ëÀ» »ó¼¼È÷ ´Ù·é´Ù.¡± _ Doug Warren, Java Web Services