°£Æí°áÁ¦, ½Å¿ëÄ«µå û±¸ÇÒÀÎ
ÀÎÅÍÆÄÅ© ·Ôµ¥Ä«µå 5% (34,200¿ø)
(ÃÖ´ëÇÒÀÎ 10¸¸¿ø / Àü¿ù½ÇÀû 40¸¸¿ø)
ºÏÇǴϾð ·Ôµ¥Ä«µå 30% (25,200¿ø)
(ÃÖ´ëÇÒÀÎ 3¸¸¿ø / 3¸¸¿ø ÀÌ»ó °áÁ¦)
NH¼îÇÎ&ÀÎÅÍÆÄÅ©Ä«µå 20% (28,800¿ø)
(ÃÖ´ëÇÒÀÎ 4¸¸¿ø / 2¸¸¿ø ÀÌ»ó °áÁ¦)
Close

½ÇÀü ½ºÇÁ¸µ ºÎÆ® : ±âº» °³³äºÎÅÍ ½Ç¹« º£½ºÆ® ÇÁ·¢Æ¼½º, ±×¸®°í GraalVM, GraphQL, R¼ÒÄÏ µî ÃֽŠ±â¼ú±îÁö

¿øÁ¦ : Spring Boot in Practice
¼Òµæ°øÁ¦

2013³â 9¿ù 9ÀÏ ÀÌÈÄ ´©Àû¼öÄ¡ÀÔ´Ï´Ù.

ÆǸÅÁö¼ö 227
?
ÆǸÅÁö¼ö¶õ?
»çÀÌÆ®ÀÇ ÆǸŷ®¿¡ ±â¹ÝÇÏ¿© ÆǸŷ® ÃßÀ̸¦ ¹Ý¿µÇÑ ÀÎÅÍÆÄÅ© µµ¼­¿¡¼­ÀÇ µ¶¸³ÀûÀÎ ÆǸŠÁö¼öÀÔ´Ï´Ù. ÇöÀç °¡Àå Àß Æȸ®´Â »óÇ°¿¡ °¡ÁßÄ¡¸¦ µÎ¾ú±â ¶§¹®¿¡ ½ÇÁ¦ ´©Àû ÆǸŷ®°ú´Â ´Ù¼Ò Â÷ÀÌ°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ÆǸŷ® ¿Ü¿¡µµ ´Ù¾çÇÑ °¡ÁßÄ¡·Î ±¸¼ºµÇ¾î ÃÖ±ÙÀÇ À̽´µµ¼­ È®Àνà À¯¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇØ´ç Áö¼ö´Â ¸ÅÀÏ °»½ÅµË´Ï´Ù.
Close
°øÀ¯Çϱâ
Á¤°¡

40,000¿ø

  • 36,000¿ø (10%ÇÒÀÎ)

    2,000P (5%Àû¸³)

ÇÒÀÎÇýÅÃ
Àû¸³ÇýÅÃ
  • S-Point Àû¸³Àº ¸¶ÀÌÆäÀÌÁö¿¡¼­ Á÷Á¢ ±¸¸ÅÈ®Á¤ÇϽŠ°æ¿ì¸¸ Àû¸³ µË´Ï´Ù.
Ãß°¡ÇýÅÃ
¹è¼ÛÁ¤º¸
  • 5/3(±Ý) À̳» ¹ß¼Û ¿¹Á¤  (¼­¿ï½Ã °­³²±¸ »ï¼º·Î 512)
  • ¹«·á¹è¼Û
ÁÖ¹®¼ö·®
°¨¼Ò Áõ°¡
  • À̺¥Æ®/±âȹÀü

  • ¿¬°üµµ¼­

  • »óÇ°±Ç

AD

Ã¥¼Ò°³

Àηù¿¡°Õ ÀÌ·± ½ºÇÁ¸µ ºÎÆ® °¡À̵åºÏÀÌ ÇÊ¿äÇß´Ù

¹æ´ëÇÑ ½ºÇÁ¸µ ºÎÆ® °ø½Ä ¹®¼­ Áß ½Ç¹«¿¡¼­ Àß ¾²ÀÌ´Â ÆÁÀ» ã±â¶õ ¾î·Æ´Ù. ÀÌ Ã¥Àº Ãʱ޿¡¼­ Áß±Þ ¼öÁØÀÇ µ¶ÀÚ¸¦ ´ë»óÀ¸·Î ½ºÇÁ¸µ ºÎÆ®ÀÇ ±âº» °³³äºÎÅÍ ´Ù¾çÇÑ ±â´ÉÀ» È¿°úÀûÀ¸·Î »ç¿ëÇÏ´Â °í±Þ °³³ä±îÁö ¾Ë·ÁÁÖ¸ç, ½Ç¹«¿¡¼­ °Þ´Â ¹®Á¦ÀÇ Çعý±îÁö ¾ËÂ÷°Ô ´ã¾Ò´Ù. ÄÚƲ¸°, GraalVM ½ºÇÁ¸µ ³×ÀÌƼºê À̹ÌÁö, GraphQL, ÇؽÃÄÚÇÁ º¼Æ®, ´ÙÁß ÀÎÁõ µîµµ ´Ù·ï ÃֽŠ±â¼úÀ» ÀÍÈ÷°í ½ÍÀº °³¹ßÀÚ¿¡°Ôµµ Å« µµ¿òÀ» ÁØ´Ù.

ÃâÆÇ»ç ¼­Æò

½ºÇÁ¸µ ºÎÆ®¿¡¼­ ÀÚÁÖ °Þ´Â °³¹ß ¹®Á¦¸¦ ¿ä±¸ »çÇ×/Çعý/Åä·Ð Çü½ÄÀ¸·Î Ç®¾î³½ ½Ç¿ëÀûÀÎ ·¹½ÃÇÇ

IT ¾÷°è¿¡¼­ ¸¶ÀÌÅ©·Î¼­ºñ½º ±â¹Ý ¾ÆÅ°ÅØó°¡ ³Î¸® »ç¿ëµÊ¿¡ µû¶ó ½ºÇÁ¸µ ºÎÆ®ÀÇ Àαâ´Â ÇÏ´ÃÀ» Â°í ÀÖÀ¸¸ç ½ºÇÁ¸µ ºÎÆ®´Â °³¹ßÀÚµé »çÀÌ¿¡¼­ °¡Àå ¹è¿ì°í ½ÍÀº ÀÚ¹Ù ÇÁ·¹ÀÓ¿öÅ©·Î ÀÚ¸®¸Å±èÇÏ°í ÀÖ´Ù. ¾öû³­ Àα⿡µµ ½ºÇÁ¸µ ºÎÆ®ÀÇ °ø½Ä ¹®¼­´Â ³Ê¹«³ª ¹æ´ëÇÏ°í ¹Ù·Î »ç¿ëÇÒ ¼ö ÀÖ´Â ¿¹Á¦´Â ÅξøÀÌ ºÎÁ·ÇÏ¿© ÃÊÁß±Þ »ç¿ëÀÚ¿¡°Ô ÀûÇÕÇÏÁö ¾Ê´Ù.

ÀÌ Ã¥Àº ½ºÇÁ¸µ ºÎÆ®ÀÇ ¸íÈ®ÇÑ ±×¸²À» º¸¿©ÁÖ°í ³»ºÎ °³³äÀ» ¾Ë±â ½±°Ô ¼³¸íÇÑ´Ù. ¶ÇÇÑ ±³°ú¼­ ½ºÅ¸ÀÏÀÇ ÀÌ·ÐÀûÀÎ ¿¹Á¦°¡ ¾Æ´Ï¶ó ½Ç¹«¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â ¿¹Á¦¸¦ Á¦°øÇÑ´Ù. 1ºÎ¿¡¼­´Â ½ºÇÁ¸µ ºÎÆ®¸¦ °³°ýÀûÀ¸·Î »ìÆ캸°í ÁÖ¿ä Ư¡°ú ´Ù¾çÇÑ ±â´ÉÀ» »ìÆ캻´Ù. 2ºÎ´Â µ¥ÀÌÅͺ£À̽º ¿¬µ¿, ÀÚµ¿ ±¸¼º°ú ¾×Ãß¿¡ÀÌÅÍ, ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼, °í±Þ º¸¾È ±â¹ý, RESTful API °³¹ß ¹æ¹ý µî ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß¿¡ ÇÊ¿äÇÑ °³³ä°ú ±â¹ýÀ» ¾Ë¾Æº»´Ù. 3ºÎ´Â À¥¼ÒÄÏ, R¼ÒÄÏÀ» »ç¿ëÇؼ­ ½ºÇÁ¸µ ºÎÆ® ¸®¾×Ƽºê ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µé¾îº»´Ù.

4ºÎ´Â JARÀ̳ª WAR ÆÐÅ°Áö¸¦ ÅëÇØ ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀ» ¹èÆ÷ÇÏ´Â ¹æ¹ý°ú Ŭ¶ó¿ìµå ÆÄ¿îµå¸®¿Í Çã·ÎÄí¿¡ ¹èÆ÷ÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸°í, ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀ» ÄÁÅ×À̳ʷΠ¸¸µé¾î¼­ Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ¿Í ·¹µåÇÞ ¿ÀǽÃÇÁÆ®¿¡ ¹èÆ÷Çغ»´Ù. 5ºÎ´Â ÄÚƲ¸°À» »ç¿ëÇؼ­ ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ°í, ½ºÇÁ¸µ ³×ÀÌƼºê¸¦ »ç¿ëÇØ GraalVM ³×ÀÌƼºê À̹ÌÁö¸¦ ¸¸µé¾îº¸¸ç, GraphQLÀ» »ç¿ëÇÏ´Â ¹æ¹ýµµ ¾Ë¾Æº»´Ù. ºÎ·Ï¿¡¼­´Â ½ºÇÁ¸µ À̴ϼȶóÀÌÀú·Î ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀ» »ý¼ºÇÏ´Â ¹æ¹ý, ½ºÇÁ¸µ ºÎÆ® CLI¸¦ »ç¿ëÇÏ´Â ¹æ¹ý, ½ºÇÁ¸µ MVC, ŸÀÓ¸®ÇÁ ÅÛÇø´ ¿£Áø »ç¿ë¹ýÀ» ¾Ë¾Æº»´Ù.

ÇÁ·Î¸ÞÅ׿콺, ±×¶óÆijª ¼³Ä¡ µî ¿ø¼­ ¼³¸íÀÌ ºÎÁ·ÇÑ ºÎºÐÀº Çѱ¹ µ¶ÀÚ¸¦ À§ÇØ ¿Å±äÀÌ°¡ ±×¸²°ú ¼³¸íÀ» Ãß°¡ÇØ ¿Ï¼ºµµ¸¦ ´õ¿í ³ô¿´´Ù. ÃֽŠ³»¿ëÀ¸·Î °¡µæ Âù ÀÌ Ã¥Àº ½ºÇÁ¸µ ºÎÆ® °³¹ßÀڵ鿡°Ô ¿Ã¹Ù¸¥ ¹æÇâÀ» ¾Ë·ÁÁÖ´Â ÃÖ°íÀÇ °¡À̵å´Ù. °³¹ß ¹®Á¦¸¦ ÇØ°áÇÏ°í ÃֽŠ±â¼úÀ» ÀÍÈ÷°í ½ÍÀº ½Ç¹«ÀÚ¿¡°Ô µµ¿òÀÌ µÇ´Â °ÍÀº ¹°·Ð, ½ºÇÁ¸µ ºÎÆ® ±âº» °³³ä°ú ÇÙ½É ±â´Éµéµµ ´Ù·ç±â ¶§¹®¿¡ Ãʺ¸ÀÚµµ ¼ø¼­´ë·Î Á¤µ¶Çϱ⸸ ÇÑ´Ù¸é ½ºÇÁ¸µ ºÎÆ®·Î ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÃàÇÒ ¼ö ÀÖ´Ù.

ÁÖ¿ä ³»¿ë
¡Ü Àü¹®°¡ÀÇ °üÁ¡¿¡¼­ ¹Ù¶óº» ½ºÇÁ¸µ ºÎÆ®ÀÇ ´Ù¾çÇÑ ±â´É
¡Ü ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ¼³Á¤ °ü¸®, ·Î±ë, µ¥ÀÌÅÍ °ËÁõ
¡Ü ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ È°¿ë ¹× ½ÇÁ¦ ¼­ºñ½º ȯ°æ¿¡ Àû¿ëÇÏ´Â °í±Þ º¸¾È ±â¹ý
¡Ü ½ºÇÁ¸µ ºÎÆ®·Î ¸¶ÀÌÅ©·Î¼­ºñ½º ¹× RESTful API °³¹ßÇϱâ
¡Ü ¸¶ÀÌÅ©·Î¼­ºñ½º ¹®¼­È­, ¹öÀú´×, º¸¾È¼º Çâ»ó ±â¹ý
¡Ü À¥¼ÒÄÏ, R¼ÒÄÏÀ» »ç¿ëÇÑ ¸®¾×Ƽºê ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß
¡Ü Äí¹ö³×Ƽ½º ¹× ÁÖ¿ä Ŭ¶ó¿ìµå Ç÷§Æû¿¡ ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÆ÷
¡Ü ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ ÄÁÅ×À̳ÊÈ­ ±¸ÇöÇϱâ
¡Ü ½ºÇÁ¸µ ºÎÆ®¿¡ ÄÚƲ¸°, GraalVM ³×ÀÌƼºê À̹ÌÁö, GraphQL ÅëÇÕÇϱâ

̵̧ȍ

Á¶½Ã ·Õ(Josh Long)(VM¿þ¾î źÁÖ ¼Ò¼Ó ½ºÇÁ¸µ °³¹ßÀÚ ¾Öµå¹öŶ)
¹æÇâÀ» Á¦´ë·Î Á¤ÇÏÁö ¾Ê°í ±æÀ» ã¾Æ³¾ ¼ö´Â ¾ø´Â ¹ýÀÌ´Ù. ¡¶½ÇÀü ½ºÇÁ¸µ ºÎÆ®¡·´Â ³»°Ô Èñ¸ÁÀ» ¾È°ÜÁá´Ù. ÀÌ Ã¥ ´öºÐ¿¡ ¼­¹ö ¾ÖÇø®ÄÉÀÌ¼Ç È®Àå°ú ¼­ºñ½º ¹èÆ÷ ½Ã Ç×»ó µÚµû¶ó¿À´Â Çö±âÁõÀ» ÇÇÇÒ ¼ö ÀÖ°Ô µÆ´Ù. ¾ËÂù ³»¿ëÀ¸·Î °¡µæ Âù ÀÌ Ã¥À» ÀÐÀ¸¸é ¾ÖÇø®ÄÉÀÌ¼Ç ±¸Ãà ¾÷¹«¿¡ ¹Ù·Î ¶Ù¾îµé ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¸ÕÀú ±âÃʸ¦ ºü¸£°í ´Ü´ÜÇÏ°Ô ´ÙÁú ¼ö ÀÖ°í, Àд٠º¸¸é ¾î´À»õ ¹«¾ð°¡¸¦ ¸¸µé°í ÀÖ´Â ÀÚ½ÅÀ» ¹ß°ßÇÏ°Ô µÈ´Ù. ¹«¾ð°¡¸¦ ¹è¿ì´Â µ¥´Â À̺¸´Ù ÁÁÀº ¹æ¹ýÀÌ ¾øÀ» °ÍÀÌ´Ù.

¸ñÂ÷

¿Å±äÀÌ ¸Ó¸®¸» xi
º£Å¸¸®´õ Èıâ xii
Ãßõ ¼­¹®(Á¶½Ã ·Õ) xiv
½ÃÀÛÇϸç xvi
°¨»çÀÇ ±Û xviii
ÀÌ Ã¥¿¡ ´ëÇÏ¿© xx
Ç¥Áö¿¡ ´ëÇÏ¿© xxiii

PART I
CHAPTER 1 ½ºÇÁ¸µ ºÎÆ® ½ÃÀÛÇϱâ 3
1.1 ½ºÇÁ¸µ ºÎÆ® ¼Ò°³ 4
__1.1.1 ¿Ö ½ºÇÁ¸µ ºÎÆ®Àΰ¡ 4
__1.1.2 ½ºÇÁ¸µ ºÎÆ®´Â ¹«¾ùÀΰ¡ 5
__1.1.3 ½ºÇÁ¸µ ºÎÆ® ÇÙ½É ±â´É 6
__1.1.4 ½ºÇÁ¸µ ºÎÆ® ÄÄÆ÷³ÍÆ® 7
1.2 ÄÚµå ¿¹Á¦ 9
__1.2.1 ¸ÞÀ̺ì vs. ±×·¹À̵é 9
__1.2.2 ÀÚ¹Ù vs. ÄÚƲ¸° 10
__1.2.3 µ¥ÀÌÅͺ£À̽º Áö¿ø 10
__1.2.4 ·Òº¹ 10
1.3 ½ºÇÁ¸µ ºÎÆ® ½ÃÀÛÇϱâ 11
__1.3.1 ù ¹ø° ½ºÇÁ¸µ ºÎÆ® ÇÁ·ÎÁ§Æ® 11
__1.3.2 ½ºÇÁ¸µ ºÎÆ® ÇÁ·ÎÁ§Æ® ±¸Á¶ 11
__1.3.3 ½ÇÇà °¡´ÉÇÑ JAR ÆÄÀÏ ¸¸µé±â 22
__1.3.4 JAR ÆÄÀÏ ±¸Á¶ 23
__1.3.5 ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç Á¾·á 24
1.4 ½ºÇÁ¸µ ºÎÆ® ±âŸ °³³ä 25
__1.4.1 ½ºÇÁ¸µ ºÎÆ® ½ºÅ¸Æ®¾÷ À̺¥Æ® 25
__1.4.2 ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç À̺¥Æ® °¨Áö 26
__1.4.3 Ä¿½ºÅÒ ½ºÇÁ¸µ ºÎÆ® ½ºÅ¸ÅÍ 29
__1.4.4 Ä¿½ºÅÒ ÀÚµ¿ ±¸¼º 29
__1.4.5 ½ÇÆÐ ºÐ¼®±â 30
__1.4.6 ½ºÇÁ¸µ ºÎÆ® ¾×Ãß¿¡ÀÌÅÍ 30
__1.4.7 ½ºÇÁ¸µ ºÎÆ® °³¹ßÀÚ µµ±¸ 31

PART II
CHAPTER 2 ½ºÇÁ¸µ ºÎÆ® °øÅë ÀÛ¾÷ 35
2.1 ¾ÖÇø®ÄÉÀÌ¼Ç ¼³Á¤ °ü¸® 35
__2.1.1 SpringApplication Ŭ·¡½º »ç¿ë 36
__2.1.2 @PropertySource »ç¿ë 37
__2.1.3 ȯ°æ ¼³Á¤ ÆÄÀÏ 40
__2.1.4 ¿î¿µ üÁ¦ ȯ°æ º¯¼ö 47
2.2 @ConfigurationProperties·Î Ä¿½ºÅÒ ÇÁ·ÎÆÛƼ ¸¸µé±â 49
__2.2.1 ±â¹ý: @ConfigurationProperties¸¦ »ç¿ëÇÑ Ä¿½ºÅÒ ÇÁ·ÎÆÛƼ Á¤ÀÇ 50
2.3 ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ½ÃÀÛ ½Ã ÄÚµå ½ÇÇà 56
__2.3.1 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ½ÃÀÛ ½Ã CommandLineRunner·Î ÄÚµå ½ÇÇà 57
2.4 ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ·Î±ë Ä¿½ºÅ͸¶ÀÌ¡ 62
__2.4.1 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀÇ ±âº» ·Î±ë ÀÌÇØ ¹× Ä¿½ºÅ͸¶ÀÌ¡ 62
__2.4.2 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ Log4j2 »ç¿ë 67
2.5 ºó ¹ë¸®µ¥À̼ÇÀ¸·Î »ç¿ëÀÚ ÀÔ·Â µ¥ÀÌÅÍ À¯È¿¼º °ËÁõ 72
__2.5.1 ±â¹ý: ºó ¹ë¸®µ¥ÀÌ¼Ç ¾Ö³ÊÅ×À̼ÇÀ» »ç¿ëÇÑ ºñÁî´Ï½º ¿£Æ¼Æ¼ À¯È¿¼º °ËÁõ 72
__2.5.2 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ Ä¿½ºÅÒ ºó ¹ë¸®µ¥ÀÌ¼Ç ¾Ö³ÊÅ×À̼ÇÀ» »ç¿ëÇÑ
POJO ºó À¯È¿¼º °ËÁõ 76

CHAPTER 3 ½ºÇÁ¸µ µ¥ÀÌÅ͸¦ »ç¿ëÇÑ µ¥ÀÌÅͺ£À̽º Á¢±Ù 83
3.1 ½ºÇÁ¸µ µ¥ÀÌÅÍ ¼Ò°³ 83
__3.1.1 ¿Ö ½ºÇÁ¸µ µ¥ÀÌÅÍÀΰ¡? 84
__3.1.2 ½ºÇÁ¸µ µ¥ÀÌÅÍ ¸ðµâ 85
3.2 ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅͺ£À̽º ¿¬µ¿ ¼³Á¤ 87
__3.2.1 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ °ü°èÇü µ¥ÀÌÅͺ£À̽º ¿¬µ¿ ¼³Á¤ 88
__3.2.2 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ¸ù°íDB ¼³Á¤ 93
__3.2.3 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ °ü°èÇü µ¥ÀÌÅͺ£À̽º ÃʱâÈ­ 96
3.3 CrudRepository ÀÎÅÍÆäÀ̽º ÀÌÇØ 101
__3.3.1 ±â¹ý: ½ºÇÁ¸µ µ¥ÀÌÅÍ JPA¸¦ »ç¿ëÇؼ­ µµ¸ÞÀÎ °´Ã¼¸¦ °ü°èÇü µ¥ÀÌÅͺ£À̽º¿¡¼­ °ü¸®
103
__3.3.2 ±â¹ý: Ä¿½ºÅÒ ½ºÇÁ¸µ µ¥ÀÌÅÍ ¸®Æ÷ÁöÅ͸®¸¦ ¸¸µé¾î¼­ °ü°èÇü µ¥ÀÌÅͺ£À̽º¿¡¼­ µµ¸ÞÀÎ
°´Ã¼ °ü¸® 111
3.4 ½ºÇÁ¸µ µ¥ÀÌÅ͸¦ »ç¿ëÇÑ µ¥ÀÌÅÍ Á¶È¸ 114
__3.4.1 Äõ¸® ¸Þ¼­µå Á¤ÀÇ 114
__3.4.2 ±â¹ý: °ü°èÇü µ¥ÀÌÅͺ£À̽º¿¡¼­ ½ºÇÁ¸µ µ¥ÀÌÅÍ JPA¸¦ »ç¿ëÇÑ Ä¿½ºÅÒ Äõ¸® ¸Þ¼­µå Á¤ÀÇ
115
__3.4.3 PagingAndSortingRepository¸¦ È°¿ëÇÑ ÆäÀÌ¡ 119
__3.4.4 PagingAndSortingRepository ÀÎÅÍÆäÀ̽º·Î µ¥ÀÌÅÍ ÆäÀÌ¡ ¹× Á¤·Ä 119
__3.4.5 @NamedQuery¸¦ »ç¿ëÇÏ´Â Äõ¸® 123
__3.4.6 ±â¹ý: °ü°èÇü µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåµÈ µµ¸ÞÀÎ °´Ã¼¸¦ NamedQuery·Î Á¶È¸ 124
3.5 @Query·Î Äõ¸®¹® ÁöÁ¤ 127
__3.5.1 ±â¹ý: @Query ¾Ö³ÊÅ×À̼ÇÀ» »ç¿ëÇؼ­ Äõ¸®¸¦ Á¤ÀÇÇÏ°í °ü°èÇü µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀå
µÈ µµ¸ÞÀÎ °´Ã¼ Á¶È¸ 127
3.6 Criteria API »ç¿ë 132
__3.6.1 ±â¹ý: Criteria API¸¦ »ç¿ëÇؼ­ °ü°èÇü µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåµÈ µµ¸ÞÀÎ °´Ã¼ °ü¸® 132
3.7 ½ºÇÁ¸µ µ¥ÀÌÅÍ JPA¿Í QueryDSL 136
__3.7.1 ±â¹ý: °ü°èÇü µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåµÈ µµ¸ÞÀÎ °´Ã¼¸¦ QueryDSL·Î °ü¸® 136
__3.7.2 ±â¹ý: ÇÁ·ÎÁ§¼Ç 142
3.8 µµ¸ÞÀÎ °´Ã¼ °ü°è °ü¸® 144
__3.8.1 ±â¹ý: ½ºÇÁ¸µ µ¥ÀÌÅÍ JPA¸¦ »ç¿ëÇؼ­ °ü°èÇü µ¥ÀÌÅͺ£À̽º¿¡¼­ ´Ù´ë´Ù °ü°è µµ¸ÞÀÎ °´
ü °ü¸® 145

CHAPTER 4 ½ºÇÁ¸µ ÀÚµ¿ ±¸¼º°ú ¾×Ãß¿¡ÀÌÅÍ 157
4.1 ½ºÇÁ¸µ ºÎÆ® ÀÚµ¿ ±¸¼º ÀÌÇØ 158
__4.1.1 @Conditional ¾Ö³ÊÅ×ÀÌ¼Ç ÀÌÇØ 160
__4.1.2 ÀÚµ¿ ±¸¼º Ž±¸ 163
4.2 ½ºÇÁ¸µ ºÎÆ® °³¹ßÀÚ µµ±¸ 166
__4.2.1 ÇÁ·ÎÆÛƼ ±âº»°ª 167
__4.2.2 ÀÚµ¿ Àç½ÃÀÛ 167
__4.2.3 ¶óÀÌºê ¸®·Îµå 167
4.3 Ä¿½ºÅÒ ½ÇÆÐ ºÐ¼®±â »ý¼º 167
__4.3.1 ±â¹ý: Ä¿½ºÅÒ ½ºÇÁ¸µ ºÎÆ® ½ÇÆÐ ºÐ¼®±â »ý¼º 168
4.4 ½ºÇÁ¸µ ºÎÆ® ¾×Ãß¿¡ÀÌÅÍ 172
__4.4.1 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ¾×Ãß¿¡ÀÌÅÍ ¼³Á¤ 173
__4.4.2 ½ºÇÁ¸µ ºÎÆ® ¾×Ãß¿¡ÀÌÅÍ ¿£µåÆ÷ÀÎÆ® ÀÌÇØ 174
__4.4.3 ½ºÇÁ¸µ ºÎÆ® ¾×Ãß¿¡ÀÌÅÍ ¿£µåÆ÷ÀÎÆ® °ü¸® 177
__4.4.4 Health ¿£µåÆ÷ÀÎÆ® Ž±¸ 179
__4.4.5 Ä¿½ºÅÒ ½ºÇÁ¸µ ºÎÆ® HealthIndicator ÀÛ¼º 183
__4.4.6 ±â¹ý: Ä¿½ºÅÒ ½ºÇÁ¸µ ºÎÆ® ¾×Ãß¿¡ÀÌÅÍ HealthIndicator Á¤ÀÇ 183
4.5 info ¿£µåÆ÷ÀÎÆ® Ž±¸ 186
__4.5.1 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ¾×Ãß¿¡ÀÌÅÍ info ¿£µåÆ÷ÀÎÆ® ¼³Á¤ 186
__4.5.2 ±â¹ý: ¾ÖÇø®ÄÉÀÌ¼Ç Á¤º¸¸¦ Ç¥½ÃÇÏ´Â Ä¿½ºÅÒ InfoContributor 190
4.6 Ä¿½ºÅÒ ½ºÇÁ¸µ ºÎÆ® ¾×Ãß¿¡ÀÌÅÍ ¿£µåÆ÷ÀÎÆ® »ý¼º 192
__4.6.1 ±â¹ý: Ä¿½ºÅÒ ½ºÇÁ¸µ ºÎÆ® ¾×Ãß¿¡ÀÌÅÍ »ý¼º 193
__4.6.2 ½ºÇÁ¸µ ºÎÆ® ¾×Ãß¿¡ÀÌÅÍ ¸ÞÆ®¸¯ 200
__4.6.3 Ä¿½ºÅÒ ÃøÁ¤ÁöÇ¥ »ý¼º 203
__4.6.4 ÇÁ·Î¸ÞÅ׿콺¿Í ±×¶óÆijª¸¦ »ç¿ëÇÑ ÃøÁ¤ÁöÇ¥ ´ë½Ãº¸µå 210

CHAPTER 5 ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç º¸¾È 223
5.1 ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ ¼Ò°³ 224
5.2 ½ºÇÁ¸µ ºÎÆ®¿Í ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ 226
__5.2.1 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ È°¼ºÈ­ 226
__5.2.2 ÇÊÅÍ, ÇÊÅÍüÀΰú ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ 231
__5.2.3 ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ ¾ÆÅ°ÅØó 233
__5.2.4 »ç¿ëÀÚ ÀÎÁõ 236
__5.2.5 ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ ÀÚµ¿ ±¸¼º 239
5.3 ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ Àû¿ë 242
__5.3.1 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ ·Î±×ÀÎ ÆäÀÌÁö Ä¿½ºÅ͸¶ÀÌ¡
242
__5.3.2 ±â¹ý: Àθ޸𸮠ÀÎÁõ Àû¿ë 248
__5.3.3 ±â¹ý: JDBC ÀÎÁõ ¼³Á¤ 255
__5.3.4 ±â¹ý: Ä¿½ºÅÒ UserDetailsService Àû¿ë 259
__5.3.5 ±â¹ý: LDAP ÀÎÁõ Àû¿ë 265
__5.3.6 ±â¹ý: HTTP ±âº» ÀÎÁõ Àû¿ë 270

CHAPTER 6 ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ ÀÀ¿ë 274
6.1 ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ǿ¡ HTTPS È°¼ºÈ­ 276
__6.1.1 ±â¹ý: HTTPS È°¼ºÈ­ 276
6.2 ½ºÇÁ¸µ Ŭ¶ó¿ìÆ® º¼Æ®¸¦ È°¿ëÇÑ ºñ¹Ð Á¤º¸ °ü¸® 280
__6.2.1 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ º¼Æ®¸¦ È°¿ëÇÑ ºñ¹Ð Á¤º¸ °ü¸® 281
6.3 »ç¿ëÀÚ µî·Ï ±¸Çö 286
__6.3.1 ±â¹ý: ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼¸¦ »ç¿ëÇÑ »ç¿ëÀÚ µî·Ï ±¸Çö 286
6.4 À̸ÞÀÏ È®ÀÎ 296
__6.4.1 ±â¹ý: »ç¿ëÀÚ À̸ÞÀÏ È®ÀÎ 297
6.5 ·Î±×ÀÎ ½Ãµµ Ƚ¼ö Á¦ÇÑ 309
__6.5.1 ±â¹ý: ·Î±×ÀÎ ½Ãµµ Ƚ¼ö Á¦ÇÑ 309
6.6 ¸®¸â¹ö ¹Ì ±â´É ±¸Çö 316
__6.6.1 ±â¹ý: ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼¸¦ »ç¿ëÇÑ ¸®¸â¹ö ¹Ì ±¸Çö 316
6.7 ¸®Ä¸Â÷ ±¸Çö 320
__6.7.1 ±â¹ý: ±¸±Û ¸®Ä¸Â÷ Àû¿ë 321
6.8 ±¸±Û ¿À¼¾Æ¼ÄÉÀÌÅÍ 2´Ü°è ÀÎÁõ 328
__6.8.1 ±â¹ý: 2´Ü°è ÀÎÁõ Àû¿ë 329
6.9 OAuth2 ÀÎÁõ 342
__6.9.1 ±â¹ý: ±¸±Û °èÁ¤À¸·Î ·Î±×ÀÎ 342
6.10 ¾×Ãß¿¡ÀÌÅÍ ¿£µåÆ÷ÀÎÆ® º¸¾È 353
__6.10.1 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ¾×Ãß¿¡ÀÌÅÍ ¿£µåÆ÷ÀÎÆ® º¸¾È 354

CHAPTER 7 ½ºÇÁ¸µ ºÎÆ® RESTful À¥ ¼­ºñ½º °³¹ß 357
7.1 ½ºÇÁ¸µ ºÎÆ® RESTful API °³¹ß 358
__7.1.1 ±â¹ý: ½ºÇÁ¸µ ºÎÆ®¸¦ »ç¿ëÇÑ RESTful API °³¹ß 358
7.2 ½ºÇÁ¸µ ºÎÆ® RESTful API ¿¹¿Ü ó¸® 368
__7.2.1 ±â¹ý: RESTful API ¿¹¿Ü ó¸® 368
7.3 RESTful API Å×½ºÆ® 373
__7.3.1 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ RESTful API Å×½ºÆ® 374
7.4 RESTful API ¹®¼­È­ 380
__7.4.1 ±â¹ý: OpenAPI¸¦ »ç¿ëÇÑ RESTful API ¹®¼­È­ 380
7.5 RESTful API ¹öÀú´× 387
__7.5.1 ±â¹ý: URI ¹öÀú´× 388
__7.5.2 ±â¹ý: HTTP ¿äû ÆĶó¹ÌÅ͸¦ »ç¿ëÇÑ ¹öÀú´× 392
__7.5.3 ±â¹ý: Ä¿½ºÅÒ HTTP Çì´õ¸¦ »ç¿ëÇÑ ¹öÀú´× 394
__7.5.4 ±â¹ý: ¹Ìµð¾î ŸÀÔÀ» »ç¿ëÇÑ ¹öÀú´× 397
7.6 RESTful API º¸¾È 400
__7.6.1 ±â¹ý: JWT¸¦ »ç¿ëÇÑ RESTful API ¿äû Àΰ¡ 401


PART III
CHAPTER 8 ¸®¾×Ƽºê ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß 425
8.1 ¸®¾×Ƽºê ÇÁ·Î±×·¡¹Ö ¼Ò°³ 426
__8.1.1 ¹éÇÁ·¹¼Å 429
__8.1.2 ¸®¾×Ƽºê ÇÁ·Î±×·¡¹ÖÀÇ ÀåÁ¡ 430
8.2 ÇÁ·ÎÁ§Æ® ¸®¾×ÅÍ 431
8.3 ½ºÇÁ¸µ À¥Ç÷°½º ¼Ò°³ 435
__8.3.1 ±â¹ý: ¾Ö³ÊÅ×ÀÌ¼Ç ÄÁÆ®·Ñ·¯ ±â¹ÝÀÇ ¸®¾×Ƽºê RESTful API °³¹ß 436
__8.3.2 ±â¹ý: ÇÔ¼öÇü ¿£µåÆ÷ÀÎÆ®¸¦ »ç¿ëÇÏ´Â ¸®¾×Ƽºê RESTful API °³¹ß 445
8.4 ¸®¾×Ƽºê ¾ÖÇø®ÄÉÀÌ¼Ç Å×½ºÆ® 451
__8.4.1 ±â¹ý: WebClient·Î API Ŭ¶óÀ̾ðÆ® ÀÛ¼º 452
8.5 ¾Ë¼ÒÄÏ ¼Ò°³ 459
__8.5.1 ±â¹ý: ¾Ë¼ÒÄÏ°ú ½ºÇÁ¸µ ºÎÆ®¸¦ È°¿ëÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß 460
8.6 À¥¼ÒÄÏ ¼Ò°³ 471
__8.6.1 ±â¹ý: À¥¼ÒÄÏÀ» »ç¿ëÇÏ´Â ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß 473

PART IV
CHAPTER 9 ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÆ÷ 483
9.1 ½ÇÇà °¡´ÉÇÑ JAR ÆÄÀÏ·Î ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ½ÇÇà 485
__9.1.1 ±â¹ý: ½ÇÇà °¡´ÉÇÑ JAR ÆÄÀÏ·Î ÆÐŰ¡ÇÏ°í ½ÇÇà 485
9.2 ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀ» WAR ÆÐÅ°Áö·Î ¸¸µé¾î ¹èÆ÷ 491
__9.2.1 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀ» WAR ÆÄÀÏ·Î ÆÐŰ¡ÇÏ°í WildFly ¾ÖÇø®ÄÉÀÌ¼Ç ¼­
¹ö¿¡ ¹èÆ÷ 492
9.3 Ŭ¶ó¿ìµå ÆÄ¿îµå¸®¿¡ ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÆ÷ 502
__9.3.1 ±â¹ý: Ŭ¶ó¿ìµå ÆÄ¿îµå¸®¿¡ ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÆ÷ 504
9.4 Çã·ÎÄí¿¡ ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÆ÷ 507
__9.4.1 ±â¹ý: Çã·ÎÄí¿¡ ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÆ÷ 508
9.5 µµÄ¿ ÄÁÅ×À̳ʷΠ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÆ÷ 511
__9.5.1 ±â¹ý: ÄÁÅ×ÀÌ³Ê À̹ÌÁö »ý¼º°ú ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀ» ÄÁÅ×À̳ʷΠ¸¸µé¾î ½ÇÇàÇÏ
±â 513
9.6 Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ¿¡ ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÆ÷ 519
__9.6.1 ±â¹ý: Äí¹ö³×Ƽ½º¿¡ ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÆ÷ 519
9.7 ·¹µåÇÞ ¿ÀǽÃÇÁÆ®¿¡ ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÆ÷ 525
__9.7.1 ±â¹ý: ·¹µåÇÞ ¿ÀǽÃÇÁÆ® Ç÷§Æû¿¡ ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÆ÷ 525

PART V
CHAPTER 10 ½ºÇÁ¸µ ºÎÆ®¿Í ÄÚƲ¸°, ³×ÀÌƼºê À̹ÌÁö, GraphQL 531
10.1 ½ºÇÁ¸µ ºÎÆ®¿Í ÄÚƲ¸° 532
__10.1.1 ±â¹ý: ÄÚƲ¸°À¸·Î ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß 533
__10.1.2 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ÄÚƲ¸° ¾ÖÇø®ÄÉÀ̼ǿ¡ ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ Àû¿ë 540
10.2 ½ºÇÁ¸µ ³×ÀÌƼºê 544
__10.2.1 GraalVM 545
__10.2.2 GraalVM ³×ÀÌƼºê À̹ÌÁö 546
__10.2.3 ½ºÇÁ¸µ ºÎÆ® ³×ÀÌƼºê À̹ÌÁö 547
__10.2.4 ±â¹ý: ºôµåÆÑÀ¸·Î ½ºÇÁ¸µ ºÎÆ® ³×ÀÌƼºê À̹ÌÁö »ý¼º 547
__10.2.5 ±â¹ý: ¸ÞÀ̺ì Ç÷¯±×ÀÎÀ¸·Î ½ºÇÁ¸µ ºÎÆ® ³×ÀÌƼºê À̹ÌÁö »ý¼º 553
__10.2.6 ½ºÇÁ¸µ AOT ¸ÞÀ̺ì Ç÷¯±×ÀÎ 555
10.3 ½ºÇÁ¸µ ºÎÆ®¿Í GraphQL 557
__10.3.1 RESTÀÇ ¹®Á¦ 557
__10.3.2 GraphQL ¼Ò°³ 558
__10.3.3 ½ºÇÁ¸µ ºÎÆ®¿¡¼­ GraphQL »ç¿ë 560
__10.3.4 ±â¹ý: ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ GraphQL API °³¹ß 560
__10.3.5 ±â¹ý: À¥¼ÒÄÏÀ» »ç¿ëÇÏ´Â ½ºÇÁ¸µ ºÎÆ® GraphQL API °³¹ß 577

APPENDIX A ½ºÇÁ¸µ À̴ϼȶóÀÌÀú¿Í ½ºÇÁ¸µ ºÎÆ® CLI 583
A.1 ½ºÇÁ¸µ À̴ϼȶóÀÌÀú·Î ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç »ý¼º 583
__A.1.1 ½ºÇÁ¸µ À̴ϼȶóÀÌÀú ¼Ò°³ 583
__A.1.2 ±â¹ý: ½ºÇÁ¸µ À̴ϼȶóÀÌÀú À¥À¸·Î ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç »ý¼º 584
__A.1.3 ±â¹ý: ÀÎÅÚ¸®Á¦ÀÌ¿¡¼­ ½ºÇÁ¸µ À̴ϼȶóÀÌÀú·Î ½ºÇÁ¸µ ºÎÆ® ÇÁ·ÎÁ§Æ® »ý¼º 589
__A.1.4 ±â¹ý: ½ºÇÁ¸µ Åø ½ºÀ§Æ®¿¡¼­ ½ºÇÁ¸µ À̴ϼȶóÀÌÀú·Î ½ºÇÁ¸µ ºÎÆ® ÇÁ·ÎÁ§Æ® »ý¼º 592
__A.1.5 ±â¹ý: ºñÁÖ¾ó ½ºÆ©µð¿À Äڵ忡¼­ ½ºÇÁ¸µ À̴ϼȶóÀÌÀú·Î ½ºÇÁ¸µ ºÎÆ® ÇÁ·ÎÁ§Æ® »ý¼º
594
__A.1.6 ±â¹ý: Å͹̳ο¡¼­ ½ºÇÁ¸µ À̴ϼȶóÀÌÀú·Î ½ºÇÁ¸µ ºÎÆ® ÇÁ·ÎÁ§Æ® »ý¼º 598
A.2 ½ºÇÁ¸µ ºÎÆ® CLI¸¦ »ç¿ëÇÑ ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß 600
__A.2.1 ½ºÇÁ¸µ ºÎÆ® CLI ¼Ò°³ 600
__A.2.2 ¼³Ä¡ 601
__A.2.3 ½ºÇÁ¸µ ºÎÆ® ÇÁ·ÎÁ§Æ® »ý¼º 602 / A.2.4 °£´ÜÇÑ ½ºÇÁ¸µ ºÎÆ® ÇÁ·ÎÁ§Æ® °³¹ß 602

APPENDIX B ½ºÇÁ¸µ MVC¿Í ŸÀÓ¸®ÇÁ ÅÛÇø´ ¿£Áø 605
B.1 ½ºÇÁ¸µ MVC º¹½À 605
__B.1.1 ÇÁ·±Æ® ÄÁÆ®·Ñ·¯ µðÀÚÀÎ ÆÐÅÏ 606
__B.1.2 ¿äû ó¸® °úÁ¤ ÀÌÇØ 607
B.2 ŸÀÓ¸®ÇÁ ÅÛÇø´ ¿£Áø 609
__B.2.1 ¼Ó¼º Ç¥½Ã 610
__B.2.2 Á¶°Ç Æò°¡ 612
__B.2.3 Æû °ü¸® 613
B.3 ½ºÇÁ¸µ ºÎÆ®¿¡¼­ ÅÛÇø´ ¿£Áø È°¼ºÈ­ 616
__B.3.1 ±â¹ý: ŸÀÓ¸®ÇÁ¸¦ »ç¿ëÇؼ­ ½ºÇÁ¸µ ºÎÆ® À¥ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß 618

ã¾Æº¸±â 637

º»¹®Áß¿¡¼­

º¹ÀâÇÑ °úÁ¤ ´ë½Å¿¡ ¾ÖÇø®ÄÉÀ̼ǿ¡ ºñÁî´Ï½º ·ÎÁ÷À» ÀÛ¼ºÇÏ°í, ½ÇÇà °¡´ÉÇÑ ÆÄÀÏ·Î ¸¸µé¾î¼­ Ä¿¸Çµå¶óÀÎÀ¸·Î ¹Ù·Î ½ÇÇàÇÒ ¼ö ÀÖÀ¸¸é ¾î¶³±î? ÀÌ·¸°Ô ÇÏ¸é º¹ÀâÇÑ XML ¼³Á¤À̳ª ¾ÖÇø®ÄÉÀÌ¼Ç ¼­¹ö ¹èÆ÷ °úÁ¤, ±âŸ ±â¼úÀûÀÎ Á¶ÀÛÀÌ ÇÊ¿ä ¾ø¾îÁø´Ù. ±âÁ¸¿¡ ¼öÇàÇØ¾ß Çß´ø º¹ÀâÇÑ °úÁ¤¿¡ ÇÊ¿äÇÑ ¸ðµç ÆÛÁñ Á¶°¢À» °æÇè ¸¹Àº ¸¶¼ú»ç°¡ ½Åºñ·Ó°Ôµµ ¸ðµÎ ¾Ë¾Æ¼­ ¸ÂÃçÁØ´Ù. (4ÂÊ)

½ºÇÁ¸µ µ¥ÀÌÅÍÀÇ ÇÙ½É ¸ñÇ¥´Â ¿©·¯ µ¥ÀÌÅÍ ¼Ò½ºÀÇ µ¥ÀÌÅ͸¦ ´Ù·ê ¶§ ÀÏ°ü¼º ÀÖ´Â ÇÁ·Î±×·¡¹Ö ¸ðµ¨À» Á¦°øÇÏ´Â °ÍÀÌ´Ù. ±×·¡¼­ µ¥ÀÌÅÍ ¼Ò½º¿¡ ÀúÀåÇØ¾ß ÇÏ´Â µµ¸ÞÀÎ °´Ã¼ÀÇ ¸ÞŸµ¥ÀÌÅ͸¦ Æí¸®ÇÏ°Ô ÁöÁ¤ÇÒ ¼ö ÀÖ´Â API¸¦ Á¦°øÇÏ¿© ºñÁî´Ï½º µµ¸ÞÀÎ °´Ã¼°¡ ƯÁ¤ µ¥ÀÌÅÍ ½ºÅä¾î¿¡ ÀúÀåµÉ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ¶Ç °ü°èÇü µ¥ÀÌÅͺ£À̽º¿Í ½ºÇÁ¸µ µ¥ÀÌÅÍ JPA¸¦ »ç¿ëÇؼ­ ºñÁî´Ï½º °´Ã¼¸¦ °ü¸®ÇÒ ¼ö ÀÖ´Ù. JPA ¾Ö³ÊÅ×À̼ÇÀ» ÁöÁ¤ÇÏ¸é ½ºÇÁ¸µ µ¥ÀÌÅÍ JPA´Â °ü°èÇü µ¥ÀÌÅͺ£À̽ºÀÇ Å×ÀÌºí¿¡ µµ¸ÞÀÎ °´Ã¼¸¦ ÀúÀåÇÑ´Ù. 3Àå¿¡¼­ ºñÁî´Ï½º °´Ã¼¿¡ »ç¿ëÇÏ´Â ¿©·¯ JPA ¾Ö³ÊÅ×À̼ÇÀ» »ìÆ캼 °ÍÀÌ´Ù. (84~85ÂÊ)

ÀÌ·¸°Ô À̺¥Æ®¸¦ »ç¿ëÇÏÁö ¾Ê°í ±×³É RegistrationController¿¡¼­ À̸ÞÀÏÀ» º¸³»´Â °Íµµ ¹°·Ð °¡´ÉÇÏ´Ù. ÇÏÁö¸¸ À̺¥Æ®¸¦ »ç¿ëÇÏ¸é »ç¿ëÀÚ µî·ÏÀ̶ó´Â ÇÁ·Î¼¼½º¿Í À̸ÞÀÏ ¹ß¼ÛÀ̶ó´Â ÇàÀ§¸¦ °áÇÕÇÏÁö ¾Ê°í ºÐ¸®ÇÒ ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ´Ù. ÀÌó·³ À̺¥Æ® ¹ß»ýÀ» °üÂûÇϰųª µè°í ÀÖ´Ù°¡ ¹ß»ý ½Ã ƯÁ¤ ÀÛ¾÷À» ¼öÇàÇϵµ·Ï ¼³°èÇÏ´Â µðÀÚÀÎ ÆÐÅÏÀ» ¿É¼­¹ö(observer) ÆÐÅÏÀ̶ó°í ÇÑ´Ù. ¿É¼­¹ö ÆÐÅÏÀº ƯÈ÷ ºÐ»ê ¸¶ÀÌÅ©·Î¼­ºñ½º ȯ°æ¿¡¼­ °áÇÕµµ¸¦ ³·Ãß´Â µ¥ Áß¿äÇÑ ¿ªÇÒÀ» ÇÑ´Ù. (302ÂÊ)

API¸¦ ¼³°èÇÒ ¶§´Â ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ ¹ß»ýÇÒ ¼ö ÀÖ´Â ¿¹¿Ü ½Ã³ª¸®¿À¸¦ ½Äº°ÇÏ´Â °ÍÀÌ ¿ì¼±ÀÌ´Ù. ±×¸®°í ½Äº°µÈ ¿¹¿Ü ½Ã³ª¸®¿À¿¡ ¸Â´Â Ä¿½ºÅÒ ¿¹¿Ü Ŭ·¡½º¸¦ Á¤ÀÇÇÑ´Ù. Ä¿½ºÅÒ ¿¹¿Ü¸¦ »ç¿ëÇÏ¸é ¾ÖÇø®ÄÉÀ̼ǿ¡ ¸Â°Ô ÀûÀýÇÑ ¿¹¿Ü ¸ðµ¨À» ±¸ÃàÇÒ ¼ö ÀÖ°í ´Ù¾çÇÑ ¿¹¿Ü¿¡ ´õ À¯¿¬ÇÏ°Ô ´ëóÇÒ ¼ö ÀÖ´Ù. Ä¿½ºÅÒ ¿¹¿Ü¸¦ Á¤ÀÇÇÑ ÈÄ¿¡´Â ExceptionHandler ¸Þ¼­µå¸¦ Á¤ÀÇÇؼ­ ¿¹¿Ü ó¸® ·ÎÁ÷À» ±¸ÇöÇÏ°í »óȲ¿¡ ¸Â´Â HTTP ÀÀ´ä Äڵ带 ¹ÝȯÇÑ´Ù. ¿¹¸¦ µé¾î ¿äû º»¹®¿¡ Æ÷ÇÔµÈ JSON¿¡ ¿À·ù°¡ ÀÖÀ» ¶§´Â HTTP 400 Bad Request¸¦ ¹ÝȯÇØ¾ß Çϴµ¥, ÀÌ´Â °úÁ¦·Î ³²°ÜµÐ´Ù. (372~373ÂÊ)

½ºÇÁ¸µ ³×ÀÌƼºê(Native)¸¦ »ç¿ëÇϸé GraalVM ³×ÀÌƼºê À̹ÌÁö ÄÄÆÄÀÏ·¯¸¦ È°¿ëÇؼ­ ½ºÇÁ¸µ ¾ÖÇø®ÄÉÀ̼ÇÀ» ½ÇÇàÇÒ Çϵå¿þ¾î ¾ÆÅ°ÅØó¿¡ ƯȭµÈ ³×ÀÌƼºê ½ÇÇà ÆÄÀÏÀ» ¸¸µé ¼ö ÀÖ´Ù. ³×ÀÌƼºê À̹ÌÁö¸¦ »ç¿ëÇϸé ÀüÅëÀûÀÎ JVM ¹æ½Ä¿¡ ºñÇØ ¾ÖÇø®ÄÉÀÌ¼Ç ½ÃÀÛ ½Ã°£À̳ª ¸Þ¸ð¸® »ç¿ë·®¿¡¼­ ÀåÁ¡ÀÌ ÀÖ´Ù. GraalVM °°Àº ³×ÀÌƼºê À̹ÌÁö Ç÷§ÆûÀº ¾ÖÇø®ÄÉÀÌ¼Ç ¼Ò½º ÄÚµå¿Í Ŭ·¡½ºÆнº¸¦ ÄÄÆÄÀÏ Å¸ÀÓ¿¡¼­ Á¤ÀûÀ¸·Î ºÐ¼®Çؼ­ ·±Å¸ÀÓ¿¡ »ç¿ëÇÒ Äڵ庣À̽º¸¸ ³²±â°í ³ª¸ÓÁö´Â ¹ö¸°´Ù. °á°úÀûÀ¸·Î ³×ÀÌƼºê À̹ÌÁö¿¡´Â ·±Å¸ÀÓ¿¡ ÇÊ¿äÇÑ ³»¿ë¸¸ Æ÷ÇԵȴÙ. (544ÂÊ)

½ºÇÁ¸µ MVC´Â ÇÁ·±Æ® ÄÁÆ®·Ñ·¯ µðÀÚÀÎ ÆÐÅÏÀ» µû¶ó ¼³°èµÆ´Ù. ÇÁ·±Æ® ÄÁÆ®·Ñ·¯ ÆÐÅÏ¿¡¼­´Â ¼­ºí¸´ Çϳª°¡ ¸ðµç ¿äûÀ» ó¸®ÇÏ´Â ÁßÃß ¿ªÇÒÀ» ´ã´çÇÑ´Ù. ½ºÇÁ¸µ¿¡¼­´Â ÀÌ Á᫐ ¼­ºí¸´À» µð½ºÆÐó ¼­ºí¸´(disapatcher servlet)À̶ó°í ºÎ¸¥´Ù. ¸ðµç ¿äûÀÌ µð½ºÆÐó ¼­ºí¸´À» °ÅÃÄ °¡±â´Â ÇÏÁö¸¸ ¿äûÀÇ ½ÇÁ¦ 󸮴 ¼³Á¤ °¡´ÉÇÑ ¿©·¯ ÄÄÆ÷³ÍÆ®¿¡ À§ÀӵȴÙ. (606ÂÊ)

°ü·ÃÀ̹ÌÁö

ÀúÀÚ¼Ò°³

¿À¸í¿î [¿ª] ½ÅÀ۾˸² SMS½Åû
»ý³â¿ùÀÏ -

¾ðÁ¦³ª ¹ö±×¿Í ¾¾¸§ÇÏ´Â °³¹ßÀÚ´Ù. ¹ø¿ªÀ» ÅëÇØ °³¹ßÀÚ »ýÅ°迡 Á¶±ÝÀÌ¶óµµ º¸ÅÆÀÌ µÇ°íÀÚ ³ë·ÂÇÑ´Ù. ¡º½ºÇÁ¸µ 5.0 ¸¶ÀÌÅ©·Î¼­ºñ½º 2/e¡»(¿¡ÀÌÄÜÃâÆÇ, 2018), ¡ºD3.js ½Ç½Ã°£ µ¥ÀÌÅÍ ½Ã°¢È­¡»(¿¡ÀÌÄÜÃâÆÇ, 2015), ¡ºÅ¬¶ó¿ìµå ³×ÀÌƼºê ÀÚ¹Ù¡»(Ã¥¸¸, 2018), ¡º¿£ÅÍÇÁ¶óÀÌÁî µ¥ÀÌÅÍ Ç÷§Æû ±¸Ãà¡»(Ã¥¸¸, 2020) µîÀ» ¹ø¿ªÇßÀ¸¸ç, ¾ÕÀ¸·Îµµ ÀûÀº ¾çÀÌ¶óµµ ²ÙÁØÈ÷ ¹ø¿ª ÀÛ¾÷À» À̾ »ý°¢ÀÌ´Ù. https://homoefficio.github.io/¿¡¼­ °³¹ß °ü·Ã Áö½ÄÀ» Á¤¸®Çؼ­ ³ª´©°í ÀÖ°í, Àâ´ÙÇÑ ¹®Á¦ ÇØ°á ±â·ÏÀ» https://github.com/HomoEfficio/dev-tips¿¡ ³²±â¸é¼­ ±â¾ï·Â °¨Å𸦠±â·Ï·Â ÁõÁø

ÆîÃ帱â

Àü°øµµ¼­/´ëÇб³Àç ºÐ¾ß¿¡¼­ ¸¹Àº ȸ¿øÀÌ ±¸¸ÅÇÑ Ã¥

    ¸®ºä

    0.0 (ÃÑ 0°Ç)

    100ÀÚÆò

    ÀÛ¼º½Ã À¯ÀÇ»çÇ×

    ÆòÁ¡
    0/100ÀÚ
    µî·ÏÇϱâ

    100ÀÚÆò

    10.0
    (ÃÑ 0°Ç)

    ÆǸÅÀÚÁ¤º¸

    • ÀÎÅÍÆÄÅ©µµ¼­¿¡ µî·ÏµÈ ¿ÀǸ¶ÄÏ »óÇ°Àº ±× ³»¿ë°ú Ã¥ÀÓÀÌ ¸ðµÎ ÆǸÅÀÚ¿¡°Ô ÀÖÀ¸¸ç, ÀÎÅÍÆÄÅ©µµ¼­´Â ÇØ´ç »óÇ°°ú ³»¿ë¿¡ ´ëÇØ Ã¥ÀÓÁöÁö ¾Ê½À´Ï´Ù.

    »óÈ£

    (ÁÖ)±³º¸¹®°í

    ´ëÇ¥ÀÚ¸í

    ¾Èº´Çö

    »ç¾÷ÀÚµî·Ï¹øÈ£

    102-81-11670

    ¿¬¶ôó

    1544-1900

    ÀüÀÚ¿ìÆíÁÖ¼Ò

    callcenter@kyobobook.co.kr

    Åë½ÅÆǸž÷½Å°í¹øÈ£

    01-0653

    ¿µ¾÷¼ÒÀçÁö

    ¼­¿ïƯº°½Ã Á¾·Î±¸ Á¾·Î 1(Á¾·Î1°¡,±³º¸ºôµù)

    ±³È¯/ȯºÒ

    ¹ÝÇ°/±³È¯ ¹æ¹ý

    ¡®¸¶ÀÌÆäÀÌÁö > Ãë¼Ò/¹ÝÇ°/±³È¯/ȯºÒ¡¯ ¿¡¼­ ½Åû ¶Ç´Â 1:1 ¹®ÀÇ °Ô½ÃÆÇ ¹× °í°´¼¾ÅÍ(1577-2555)¿¡¼­ ½Åû °¡´É

    ¹ÝÇ°/±³È¯°¡´É ±â°£

    º¯½É ¹ÝÇ°ÀÇ °æ¿ì Ãâ°í¿Ï·á ÈÄ 6ÀÏ(¿µ¾÷ÀÏ ±âÁØ) À̳»±îÁö¸¸ °¡´É
    ´Ü, »óÇ°ÀÇ °áÇÔ ¹× °è¾à³»¿ë°ú ´Ù¸¦ °æ¿ì ¹®Á¦Á¡ ¹ß°ß ÈÄ 30ÀÏ À̳»

    ¹ÝÇ°/±³È¯ ºñ¿ë

    º¯½É ȤÀº ±¸¸ÅÂø¿À·Î ÀÎÇÑ ¹ÝÇ°/±³È¯Àº ¹Ý¼Û·á °í°´ ºÎ´ã
    »óÇ°À̳ª ¼­ºñ½º ÀÚüÀÇ ÇÏÀÚ·Î ÀÎÇÑ ±³È¯/¹ÝÇ°Àº ¹Ý¼Û·á ÆǸÅÀÚ ºÎ´ã

    ¹ÝÇ°/±³È¯ ºÒ°¡ »çÀ¯

    ·¼ÒºñÀÚÀÇ Ã¥ÀÓ ÀÖ´Â »çÀ¯·Î »óÇ° µîÀÌ ¼Õ½Ç ¶Ç´Â ÈÑ¼ÕµÈ °æ¿ì
    (´ÜÁö È®ÀÎÀ» À§ÇÑ Æ÷Àå ÈѼÕÀº Á¦¿Ü)

    ·¼ÒºñÀÚÀÇ »ç¿ë, Æ÷Àå °³ºÀ¿¡ ÀÇÇØ »óÇ° µîÀÇ °¡Ä¡°¡ ÇöÀúÈ÷ °¨¼ÒÇÑ °æ¿ì
    ¿¹) È­ÀåÇ°, ½ÄÇ°, °¡ÀüÁ¦Ç°(¾Ç¼¼¼­¸® Æ÷ÇÔ) µî

    ·º¹Á¦°¡ °¡´ÉÇÑ »óÇ° µîÀÇ Æ÷ÀåÀ» ÈѼÕÇÑ °æ¿ì
    ¿¹) À½¹Ý/DVD/ºñµð¿À, ¼ÒÇÁÆ®¿þ¾î, ¸¸È­Ã¥, ÀâÁö, ¿µ»ó È­º¸Áý

    ·½Ã°£ÀÇ °æ°ú¿¡ ÀÇÇØ ÀçÆǸŰ¡ °ï¶õÇÑ Á¤µµ·Î °¡Ä¡°¡ ÇöÀúÈ÷ °¨¼ÒÇÑ °æ¿ì

    ·ÀüÀÚ»ó°Å·¡ µî¿¡¼­ÀÇ ¼ÒºñÀÚº¸È£¿¡ °üÇÑ ¹ý·üÀÌ Á¤ÇÏ´Â ¼ÒºñÀÚ Ã»¾àöȸ Á¦ÇÑ ³»¿ë¿¡ ÇØ´çµÇ´Â °æ¿ì

    »óÇ° Ç°Àý

    °ø±Þ»ç(ÃâÆÇ»ç) Àç°í »çÁ¤¿¡ ÀÇÇØ Ç°Àý/Áö¿¬µÉ ¼ö ÀÖÀ½

    ¼ÒºñÀÚ ÇÇÇغ¸»ó
    ȯºÒÁö¿¬¿¡ µû¸¥ ¹è»ó

    ·»óÇ°ÀÇ ºÒ·®¿¡ ÀÇÇÑ ±³È¯, A/S, ȯºÒ, Ç°Áúº¸Áõ ¹× ÇÇÇغ¸»ó µî¿¡ °üÇÑ »çÇ×Àº ¼ÒºñÀÚºÐÀïÇØ°á ±âÁØ (°øÁ¤°Å·¡À§¿øȸ °í½Ã)¿¡ ÁØÇÏ¿© 󸮵Ê

    ·´ë±Ý ȯºÒ ¹× ȯºÒÁö¿¬¿¡ µû¸¥ ¹è»ó±Ý Áö±Þ Á¶°Ç, ÀýÂ÷ µîÀº ÀüÀÚ»ó°Å·¡ µî¿¡¼­ÀÇ ¼ÒºñÀÚ º¸È£¿¡ °üÇÑ ¹ý·ü¿¡ µû¶ó ó¸®ÇÔ

    (ÁÖ)KGÀ̴Ͻýº ±¸¸Å¾ÈÀü¼­ºñ½º¼­ºñ½º °¡ÀÔ»ç½Ç È®ÀÎ

    (ÁÖ)ÀÎÅÍÆÄÅ©Ä¿¸Ó½º´Â ȸ¿ø´ÔµéÀÇ ¾ÈÀü°Å·¡¸¦ À§ÇØ ±¸¸Å±Ý¾×, °áÁ¦¼ö´Ü¿¡ »ó°ü¾øÀÌ (ÁÖ)ÀÎÅÍÆÄÅ©Ä¿¸Ó½º¸¦ ÅëÇÑ ¸ðµç °Å·¡¿¡ ´ëÇÏ¿©
    (ÁÖ)KGÀ̴Ͻýº°¡ Á¦°øÇÏ´Â ±¸¸Å¾ÈÀü¼­ºñ½º¸¦ Àû¿ëÇÏ°í ÀÖ½À´Ï´Ù.

    ¹è¼Û¾È³»

    • ±³º¸¹®°í »óÇ°Àº Åùè·Î ¹è¼ÛµÇ¸ç, Ãâ°í¿Ï·á 1~2Àϳ» »óÇ°À» ¹Þ¾Æ º¸½Ç ¼ö ÀÖ½À´Ï´Ù.

    • Ãâ°í°¡´É ½Ã°£ÀÌ ¼­·Î ´Ù¸¥ »óÇ°À» ÇÔ²² ÁÖ¹®ÇÒ °æ¿ì Ãâ°í°¡´É ½Ã°£ÀÌ °¡Àå ±ä »óÇ°À» ±âÁØÀ¸·Î ¹è¼ÛµË´Ï´Ù.

    • ±ººÎ´ë, ±³µµ¼Ò µî ƯÁ¤±â°üÀº ¿ìü±¹ Åù踸 ¹è¼Û°¡´ÉÇÕ´Ï´Ù.

    • ¹è¼Ûºñ´Â ¾÷ü ¹è¼Ûºñ Á¤Ã¥¿¡ µû¸¨´Ï´Ù.

    • - µµ¼­ ±¸¸Å ½Ã 15,000¿ø ÀÌ»ó ¹«·á¹è¼Û, 15,000¿ø ¹Ì¸¸ 2,500¿ø - »óÇ°º° ¹è¼Ûºñ°¡ ÀÖ´Â °æ¿ì, »óÇ°º° ¹è¼Ûºñ Á¤Ã¥ Àû¿ë