|
|
|
½ÇÀü ½ºÇÁ¸µ ºÎÆ® : ±âº» °³³äºÎÅÍ ½Ç¹« º£½ºÆ® ÇÁ·¢Æ¼½º, ±×¸®°í GraalVM, GraphQL, R¼ÒÄÏ µî ÃֽŠ±â¼ú±îÁö
|
|
|
¿À¸í¿î
¤Ó
Á¦ÀÌÆà
¤Ó
Spring Boot in Practice
|
|
|
|
- Á¦ÈÞ¸ô ÁÖ¹® ½Ã °í°´º¸»ó, ÀϺΠÀ̺¥Æ® Âü¿© ¹× ÁõÁ¤Ç° ÁõÁ¤, ÇÏ·ç/´çÀÏ ¹è¼Û¿¡¼ Á¦¿ÜµÇ¹Ç·Î Âü°í ¹Ù¶ø´Ï´Ù.
-
-
-
Àηù¿¡°Õ ÀÌ·± ½ºÇÁ¸µ ºÎÆ® °¡À̵åºÏÀÌ ÇÊ¿äÇß´Ù
¹æ´ëÇÑ ½ºÇÁ¸µ ºÎÆ® °ø½Ä ¹®¼ Áß ½Ç¹«¿¡¼ Àß ¾²ÀÌ´Â ÆÁÀ» ã±â¶õ ¾î·Æ´Ù. ÀÌ Ã¥Àº Ãʱ޿¡¼ Áß±Þ ¼öÁØÀÇ µ¶ÀÚ¸¦ ´ë»óÀ¸·Î ½ºÇÁ¸µ ºÎÆ®ÀÇ ±âº» °³³äºÎÅÍ ´Ù¾çÇÑ ±â´ÉÀ» È¿°úÀûÀ¸·Î »ç¿ëÇÏ´Â °í±Þ °³³ä±îÁö ¾Ë·ÁÁÖ¸ç, ½Ç¹«¿¡¼ °Þ´Â ¹®Á¦ÀÇ Çعý±îÁö ¾ËÂ÷°Ô ´ã¾Ò´Ù. ÄÚƲ¸°, GraalVM ½ºÇÁ¸µ ³×ÀÌƼºê À̹ÌÁö, GraphQL, ÇؽÃÄÚÇÁ º¼Æ®, ´ÙÁß ÀÎÁõ µîµµ ´Ù·ï ÃֽŠ±â¼úÀ» ÀÍÈ÷°í ½ÍÀº °³¹ßÀÚ¿¡°Ôµµ Å« µµ¿òÀ» ÁØ´Ù.
-
-
½ºÇÁ¸µ ºÎÆ®¿¡¼ ÀÚÁÖ °Þ´Â °³¹ß ¹®Á¦¸¦ ¿ä±¸ »çÇ×/Çعý/Åä·Ð Çü½ÄÀ¸·Î Ç®¾î³½ ½Ç¿ëÀûÀÎ ·¹½ÃÇÇ
IT ¾÷°è¿¡¼ ¸¶ÀÌÅ©·Î¼ºñ½º ±â¹Ý ¾ÆÅ°ÅØó°¡ ³Î¸® »ç¿ëµÊ¿¡ µû¶ó ½ºÇÁ¸µ ºÎÆ®ÀÇ Àαâ´Â ÇÏ´ÃÀ» Â°í ÀÖÀ¸¸ç ½ºÇÁ¸µ ºÎÆ®´Â °³¹ßÀÚµé »çÀÌ¿¡¼ °¡Àå ¹è¿ì°í ½ÍÀº ÀÚ¹Ù ÇÁ·¹ÀÓ¿öÅ©·Î ÀÚ¸®¸Å±èÇÏ°í ÀÖ´Ù. ¾öû³ Àα⿡µµ ½ºÇÁ¸µ ºÎÆ®ÀÇ °ø½Ä ¹®¼´Â ³Ê¹«³ª ¹æ´ëÇÏ°í ¹Ù·Î »ç¿ëÇÒ ¼ö ÀÖ´Â ¿¹Á¦´Â ÅξøÀÌ ºÎÁ·ÇÏ¿© ÃÊÁß±Þ »ç¿ëÀÚ¿¡°Ô ÀûÇÕÇÏÁö ¾Ê´Ù.
ÀÌ Ã¥Àº ½ºÇÁ¸µ ºÎÆ®ÀÇ ¸íÈ®ÇÑ ±×¸²À» º¸¿©ÁÖ°í ³»ºÎ °³³äÀ» ¾Ë±â ½±°Ô ¼³¸íÇÑ´Ù. ¶ÇÇÑ ±³°ú¼ ½ºÅ¸ÀÏÀÇ ÀÌ·ÐÀûÀÎ ¿¹Á¦°¡ ¾Æ´Ï¶ó ½Ç¹«¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â ¿¹Á¦¸¦ Á¦°øÇÑ´Ù. 1ºÎ¿¡¼´Â ½ºÇÁ¸µ ºÎÆ®¸¦ °³°ýÀûÀ¸·Î »ìÆ캸°í ÁÖ¿ä Ư¡°ú ´Ù¾çÇÑ ±â´ÉÀ» »ìÆ캻´Ù. 2ºÎ´Â µ¥ÀÌÅͺ£À̽º ¿¬µ¿, ÀÚµ¿ ±¸¼º°ú ¾×Ãß¿¡ÀÌÅÍ, ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼, °í±Þ º¸¾È ±â¹ý, RESTful API °³¹ß ¹æ¹ý µî ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß¿¡ ÇÊ¿äÇÑ °³³ä°ú ±â¹ýÀ» ¾Ë¾Æº»´Ù. 3ºÎ´Â À¥¼ÒÄÏ, R¼ÒÄÏÀ» »ç¿ëÇؼ ½ºÇÁ¸µ ºÎÆ® ¸®¾×Ƽºê ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µé¾îº»´Ù.
4ºÎ´Â JARÀ̳ª WAR ÆÐÅ°Áö¸¦ ÅëÇØ ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀ» ¹èÆ÷ÇÏ´Â ¹æ¹ý°ú Ŭ¶ó¿ìµå ÆÄ¿îµå¸®¿Í Çã·ÎÄí¿¡ ¹èÆ÷ÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸°í, ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀ» ÄÁÅ×À̳ʷΠ¸¸µé¾î¼ Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ¿Í ·¹µåÇÞ ¿ÀǽÃÇÁÆ®¿¡ ¹èÆ÷Çغ»´Ù. 5ºÎ´Â ÄÚƲ¸°À» »ç¿ëÇؼ ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ°í, ½ºÇÁ¸µ ³×ÀÌƼºê¸¦ »ç¿ëÇØ GraalVM ³×ÀÌƼºê À̹ÌÁö¸¦ ¸¸µé¾îº¸¸ç, GraphQLÀ» »ç¿ëÇÏ´Â ¹æ¹ýµµ ¾Ë¾Æº»´Ù. ºÎ·Ï¿¡¼´Â ½ºÇÁ¸µ À̴ϼȶóÀÌÀú·Î ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀ» »ý¼ºÇÏ´Â ¹æ¹ý, ½ºÇÁ¸µ ºÎÆ® CLI¸¦ »ç¿ëÇÏ´Â ¹æ¹ý, ½ºÇÁ¸µ MVC, ŸÀÓ¸®ÇÁ ÅÛÇø´ ¿£Áø »ç¿ë¹ýÀ» ¾Ë¾Æº»´Ù.
ÇÁ·Î¸ÞÅ׿콺, ±×¶óÆijª ¼³Ä¡ µî ¿ø¼ ¼³¸íÀÌ ºÎÁ·ÇÑ ºÎºÐÀº Çѱ¹ µ¶ÀÚ¸¦ À§ÇØ ¿Å±äÀÌ°¡ ±×¸²°ú ¼³¸íÀ» Ãß°¡ÇØ ¿Ï¼ºµµ¸¦ ´õ¿í ³ô¿´´Ù. ÃֽŠ³»¿ëÀ¸·Î °¡µæ Âù ÀÌ Ã¥Àº ½ºÇÁ¸µ ºÎÆ® °³¹ßÀڵ鿡°Ô ¿Ã¹Ù¸¥ ¹æÇâÀ» ¾Ë·ÁÁÖ´Â ÃÖ°íÀÇ °¡À̵å´Ù. °³¹ß ¹®Á¦¸¦ ÇØ°áÇÏ°í ÃֽŠ±â¼úÀ» ÀÍÈ÷°í ½ÍÀº ½Ç¹«ÀÚ¿¡°Ô µµ¿òÀÌ µÇ´Â °ÍÀº ¹°·Ð, ½ºÇÁ¸µ ºÎÆ® ±âº» °³³ä°ú ÇÙ½É ±â´Éµéµµ ´Ù·ç±â ¶§¹®¿¡ Ãʺ¸ÀÚµµ ¼ø¼´ë·Î Á¤µ¶Çϱ⸸ ÇÑ´Ù¸é ½ºÇÁ¸µ ºÎÆ®·Î ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÃàÇÒ ¼ö ÀÖ´Ù.
ÁÖ¿ä ³»¿ë
¡Ü Àü¹®°¡ÀÇ °üÁ¡¿¡¼ ¹Ù¶óº» ½ºÇÁ¸µ ºÎÆ®ÀÇ ´Ù¾çÇÑ ±â´É
¡Ü ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ¼³Á¤ °ü¸®, ·Î±ë, µ¥ÀÌÅÍ °ËÁõ
¡Ü ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ È°¿ë ¹× ½ÇÁ¦ ¼ºñ½º ȯ°æ¿¡ Àû¿ëÇÏ´Â °í±Þ º¸¾È ±â¹ý
¡Ü ½ºÇÁ¸µ ºÎÆ®·Î ¸¶ÀÌÅ©·Î¼ºñ½º ¹× RESTful API °³¹ßÇϱâ
¡Ü ¸¶ÀÌÅ©·Î¼ºñ½º ¹®¼È, ¹öÀú´×, º¸¾È¼º Çâ»ó ±â¹ý
¡Ü À¥¼ÒÄÏ, R¼ÒÄÏÀ» »ç¿ëÇÑ ¸®¾×Ƽºê ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß
¡Ü Äí¹ö³×Ƽ½º ¹× ÁÖ¿ä Ŭ¶ó¿ìµå Ç÷§Æû¿¡ ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÆ÷
¡Ü ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ǿ¡¼ ÄÁÅ×À̳ÊÈ ±¸ÇöÇϱâ
¡Ü ½ºÇÁ¸µ ºÎÆ®¿¡ ÄÚƲ¸°, GraalVM ³×ÀÌƼºê À̹ÌÁö, GraphQL ÅëÇÕÇϱâ
-
-
¿Å±äÀÌ ¸Ó¸®¸» 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ÂÊ)
-
-
-
|
¿À¸í¿î [Àú]
|
|
-
¾ðÁ¦³ª ¹ö±×¿Í ¾¾¸§ÇÏ´Â °³¹ßÀÚ´Ù. ¹ø¿ªÀ» ÅëÇØ °³¹ßÀÚ »ýÅ°迡 Á¶±ÝÀÌ¶óµµ º¸ÅÆÀÌ µÇ°íÀÚ ³ë·ÂÇÑ´Ù. ¡º½ºÇÁ¸µ 5.0 ¸¶ÀÌÅ©·Î¼ºñ½º 2/e¡»(¿¡ÀÌÄÜÃâÆÇ, 2018), ¡ºD3.js ½Ç½Ã°£ µ¥ÀÌÅÍ ½Ã°¢È¡»(¿¡ÀÌÄÜÃâÆÇ, 2015), ¡ºÅ¬¶ó¿ìµå ³×ÀÌƼºê ÀÚ¹Ù¡»(Ã¥¸¸, 2018), ¡º¿£ÅÍÇÁ¶óÀÌÁî µ¥ÀÌÅÍ Ç÷§Æû ±¸Ãà¡»(Ã¥¸¸, 2020) µîÀ» ¹ø¿ªÇßÀ¸¸ç, ¾ÕÀ¸·Îµµ ÀûÀº ¾çÀÌ¶óµµ ²ÙÁØÈ÷ ¹ø¿ª ÀÛ¾÷À» À̾ »ý°¢ÀÌ´Ù. https://homoefficio.github.io/¿¡¼ °³¹ß °ü·Ã Áö½ÄÀ» Á¤¸®Çؼ ³ª´©°í ÀÖ°í, Àâ´ÙÇÑ ¹®Á¦ ÇØ°á ±â·ÏÀ» https://github.com/HomoEfficio/dev-tips¿¡ ³²±â¸é¼ ±â¾ï·Â °¨Å𸦠±â·Ï·Â ÁõÁøÀ¸·Î ¸Þ²Ù°í ÀÖ´Ù. ÇöÀç ³×À̹öÁ¦Æ®¿¡¼ ±Û·Î¹ú ¸ÞŸ¹ö½º ¼ºñ½ºÀÎ Á¦ÆäÅä(Zepeto)¸¦ ¸¸µé¸ç ¹é¹ß °³¹ßÀÚÀÇ ²ÞÀ» À̾°í ÀÖ´Ù.
-
-
Àüü 0°³ÀÇ ±¸¸ÅÈıⰡ ÀÖ½À´Ï´Ù.
|
ÀÎÅÍÆÄÅ©µµ¼´Â °í°´´ÔÀÇ ´Ü¼ø º¯½É¿¡ ÀÇÇÑ ±³È¯°ú ¹ÝÇ°¿¡ µå´Â ºñ¿ëÀº °í°´´ÔÀÌ ÁöºÒÄÉ µË´Ï´Ù.
´Ü, »óÇ°À̳ª ¼ºñ½º ÀÚüÀÇ ÇÏÀÚ·Î ÀÎÇÑ ±³È¯ ¹× ¹ÝÇ°Àº ¹«·á·Î ¹ÝÇ° µË´Ï´Ù. |
|
±³È¯ ¹× ¹ÝÇ°ÀÌ °¡´ÉÇÑ °æ¿ì |
»óÇ°À» °ø±Þ ¹ÞÀº ³¯·ÎºÎÅÍ 7ÀÏÀ̳» °¡´É
°ø±Þ¹ÞÀ¸½Å »óÇ°ÀÇ ³»¿ëÀÌ Ç¥½Ã, ±¤°í ³»¿ë°ú ´Ù¸£°Å³ª ´Ù¸£°Ô ÀÌÇàµÈ °æ¿ì¿¡´Â °ø±Þ¹ÞÀº ³¯·ÎºÎÅÍ 3°³¿ù À̳», ȤÀº ±×»ç½ÇÀ» ¾Ë°Ô µÈ ³¯ ¶Ç´Â ¾Ë ¼ö ÀÖ¾ú´ø ³¯·ÎºÎÅÍ 30ÀÏ À̳»
»óÇ°¿¡ ¾Æ¹«·± ÇÏÀÚ°¡ ¾ø´Â °æ¿ì ¼ÒºñÀÚÀÇ °í°´º¯½É¿¡ ÀÇÇÑ ±³È¯Àº »óÇ°ÀÇ Æ÷Àå»óÅ µîÀÌ ÀüÇô ¼Õ»óµÇÁö ¾ÊÀº °æ¿ì¿¡ ÇÑÇÏ¿© °¡´É |
|
±³È¯ ¹× ¹ÝÇ°ÀÌ ºÒ°¡´ÉÇÑ °æ¿ì |
±¸¸ÅÈ®Á¤ ÀÌÈÄ(¿ÀǸ¶ÄÏ»óÇ°¿¡ ÇÑÇÔ)
°í°´´ÔÀÇ Ã¥ÀÓ ÀÖ´Â »çÀ¯·Î »óÇ° µîÀÌ ¸ê½Ç ¶Ç´Â ÈÑ¼ÕµÈ °æ¿ì
(´Ü, »óÇ°ÀÇ ³»¿ëÀ» È®ÀÎÇϱâ À§ÇÏ¿© Æ÷Àå µîÀ» ÈѼÕÇÑ °æ¿ì´Â Á¦¿Ü)
½Ã°£ÀÌ Áö³²¿¡ µû¶ó ÀçÆǸŰ¡ °ï¶õÇÒ Á¤µµ·Î ¹°Ç°ÀÇ °¡Ä¡°¡ ¶³¾îÁø °æ¿ì
Æ÷Àå °³ºÀµÇ¾î »óÇ° °¡Ä¡°¡ ÈÑ¼ÕµÈ °æ¿ì |
|
´Ù¹è¼ÛÁöÀÇ °æ¿ì ¹ÝÇ° ȯºÒ |
´Ù¹è¼ÛÁöÀÇ °æ¿ì ´Ù¸¥ Áö¿ªÀÇ ¹ÝÇ°À» µ¿½Ã¿¡ ÁøÇàÇÒ ¼ö ¾ø½À´Ï´Ù.
1°³ Áö¿ªÀÇ ¹ÝÇ°ÀÌ ¿Ï·áµÈ ÈÄ ´Ù¸¥ Áö¿ª ¹ÝÇ°À» ÁøÇàÇÒ ¼ö ÀÖÀ¸¹Ç·Î, ÀÌÁ¡ ¾çÇØÇØ Áֽñ⠹ٶø´Ï´Ù. |
|
Áß°í»óÇ°ÀÇ ±³È¯ |
Áß°í»óÇ°Àº Á¦ÇÑµÈ Àç°í ³»¿¡¼ ÆǸŰ¡ ÀÌ·ç¾îÁö¹Ç·Î, ±³È¯Àº ºÒ°¡´ÉÇÕ´Ï´Ù. |
|
¿ÀǸ¶ÄÏ »óÇ°ÀÇ È¯ºÒ |
¿ÀǸ¶ÄÏ»óÇ°¿¡ ´ëÇÑ Ã¥ÀÓÀº ¿øÄ¢ÀûÀ¸·Î ¾÷ü¿¡°Ô ÀÖÀ¸¹Ç·Î, ±³È¯/¹ÝÇ° Á¢¼ö½Ã ¹Ýµå½Ã ÆǸÅÀÚ¿Í ÇùÀÇ ÈÄ ¹ÝÇ° Á¢¼ö¸¦ ÇϼžßÇϸç, ¹ÝÇ°Á¢¼ö ¾øÀÌ ¹Ý¼ÛÇϰųª, ¿ìÆíÀ¸·Î º¸³¾ °æ¿ì »óÇ° È®ÀÎÀÌ ¾î·Á¿ö ȯºÒÀÌ ºÒ°¡´ÉÇÒ ¼ö ÀÖÀ¸´Ï À¯ÀÇÇϽñ⠹ٶø´Ï´Ù. |
|
|
|
¹è¼Û¿¹Á¤ÀÏ ¾È³» |
ÀÎÅÍÆÄÅ© µµ¼´Â ¸ðµç »óÇ°¿¡ ´ëÇØ ¹è¼Û¿Ï·á¿¹Á¤ÀÏÀ» À¥»çÀÌÆ®¿¡ Ç¥½ÃÇÏ°í ÀÖ½À´Ï´Ù.
|
<ÀÎÅÍÆÄÅ© Á÷¹è¼Û »óÇ°> |
»óÇ°Àº ¿ù~Åä¿äÀÏ ¿ÀÀü 10½Ã ÀÌÀü ÁÖ¹®ºÐ¿¡ ´ëÇÏ¿© ´çÀÏ Ãâ°í/´çÀÏ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÏ´Â »óÇ°ÀÔ´Ï´Ù. |
»óÇ°Àº ¼¿ïÁö¿ª/ÆòÀÏ ÁÖ¹®ºÐÀº ´çÀÏ Ãâ°í/ÀÍÀÏ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇϸç,
¼¿ï¿ÜÁö¿ª/ÆòÀÏ ÁÖ¹®ºÐÀÇ °æ¿ì´Â ¿ÀÈÄ 6½Ã±îÁö ÁÖ¹®ºÐ¿¡ ´ëÇÏ¿© ÀÍÀÏ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÏ´Â »óÇ°ÀÔ´Ï´Ù.
(´Ü, ¿ù¿äÀÏÀº 12½Ã±îÁö ÁÖ¹®¿¡ ÇÑÇÔ)
|
»óÇ°Àº, ÀÔ°í¿¹Á¤ÀÏ(Á¦Ç°Ãâ½ÃÀÏ)+Åùè»ç¹è¼ÛÀÏ(1ÀÏ)¿¡ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÕ´Ï´Ù. |
~
»óÇ°Àº À¯ÅëƯ¼º»ó ÀÎÅÍÆÄÅ©¿¡¼ Àç°í¸¦ º¸À¯ÇÏÁö ¾ÊÀº »óÇ°À¸·Î ÁÖ¹®ÀÏ+±âÁØÃâ°íÀÏ+Åùè»ç¹è¼ÛÀÏ(1ÀÏ)¿¡ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÕ´Ï´Ù.(Åä/°øÈÞÀÏÀº ¹è¼Û±â°£¿¡ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.)
¡Ø±âÁØÃâ°íÀÏ:ÀÎÅÍÆÄÅ©°¡ »óÇ°À» ¼ö±ÞÇÏ¿© ¹°·ùâ°í¿¡¼ Æ÷Àå/Ãâ°íÇϱâ±îÁö ¼Ò¿äµÇ´Â ½Ã°£
|
|
<¾÷ü Á÷Á¢¹è¼Û/¿ÀǸ¶ÄÏ »óÇ°> |
~
»óÇ°Àº ¾÷ü°¡ ÁÖ¹®À» È®ÀÎÇÏ°í, Ãâ°íÇϱâ±îÁö °É¸®´Â ½Ã°£ÀÔ´Ï´Ù. ÁÖ¹®ÀÏ+±âÁØÃâ°íÀÏ+Åùè»ç¹è¼ÛÀÏ(2ÀÏ)¿¡ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÕ´Ï´Ù.(Åä/°øÈÞÀÏÀº ¹è¼Û±â°£¿¡ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.)
¡Ø5ÀÏÀ̳» Ãâ°í°¡ ½ÃÀÛµÇÁö ¾ÊÀ»½Ã, ¿ÀǸ¶ÄÏ »óÇ°Àº ÀÚµ¿À¸·Î ÁÖ¹®ÀÌ Ãë¼ÒµÇ¸ç, °í°´´Ô²² Ç°Àýº¸»ó±ÝÀ» Áö±ÞÇØ µå¸³´Ï´Ù.
|
|
|
¹è¼Ûºñ ¾È³» |
µµ¼(Áß°íµµ¼ Æ÷ÇÔ)¸¸ ±¸¸ÅÇϽøé : ¹è¼Ûºñ 2,000¿ø (1¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û) À½¹Ý/DVD¸¸ ±¸¸ÅÇϽøé : ¹è¼Ûºñ 1,500¿ø (2¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
ÀâÁö/¸¸È/±âÇÁÆ®¸¸ ±¸¸ÅÇϽøé : ¹è¼Ûºñ 2,000¿ø (2¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
µµ¼¿Í À½¹Ý/DVD¸¦ ÇÔ²² ±¸¸ÅÇϽøé : ¹è¼Ûºñ 1,500¿ø 1¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
µµ¼¿Í ÀâÁö/¸¸È/±âÇÁÆ®/Áß°íÁ÷¹è¼Û»óÇ°À» ÇÔ²² ±¸¸ÅÇϽøé : 2,000¿ø (1¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
¾÷üÁ÷Á¢¹è¼Û»óÇ°À» ±¸¸Å½Ã : ¾÷üº°·Î »óÀÌÇÑ ¹è¼Ûºñ Àû¿ë
* ¼¼Æ®»óÇ°ÀÇ °æ¿ì ºÎºÐÃë¼Ò ½Ã Ãß°¡ ¹è¼Ûºñ°¡ ºÎ°úµÉ ¼ö ÀÖ½À´Ï´Ù.
* ºÏÄ«Æ®¿¡¼ ¹è¼Ûºñ¾ø¾Ö±â ¹öÆ°À» Ŭ¸¯Çϼż, µ¿ÀϾ÷ü»óÇ°À» Á¶±Ý ´õ ±¸¸ÅÇϽøé, ¹è¼Ûºñ¸¦ Àý¾àÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.
|
|
Çؿܹè¼Û ¾È³» |
ÀÎÅÍÆÄÅ©µµ¼¿¡¼´Â ±¹³»¿¡¼ ÁÖ¹®ÇϽðųª ÇØ¿Ü¿¡¼ ÁÖ¹®ÇÏ¿© ÇØ¿Ü·Î ¹è¼ÛÀ» ¿øÇÏ½Ç °æ¿ì DHL°ú Ư¾àÀ¸·Î Ã¥Á¤µÈ ¿ä±ÝÇ¥¿¡
ÀÇÇØ °³ÀÎÀÌ ÀÌ¿ëÇÏ´Â °æ¿ìº¸´Ù ¹è¼Û¿ä±ÝÀ» Å©°Ô ³·Ã߸ç DHL(www.dhl.co.kr)·Î Çؿܹè¼Û ¼ºñ½º¸¦ Á¦°øÇÕ´Ï´Ù.
Çؿܹè¼ÛÀº µµ¼/CD/DVD »óÇ°¿¡ ÇÑÇØ ¼ºñ½ºÇÏ°í ÀÖÀ¸¸ç, ´Ù¸¥ »óÇ°À» ºÏÄ«Æ®¿¡ ÇÔ²² ´ãÀ¸½Ç °æ¿ì Çؿܹè¼ÛÀÌ ºÒ°¡ÇÕ´Ï´Ù.
ÇØ¿ÜÁÖ¹®¹è¼Û ¼ºñ½º´Â ÀÎÅÍÆÄÅ© µµ¼ ȸ¿ø °¡ÀÔÀ» Çϼž߸¸ ½Åû °¡´ÉÇÕ´Ï´Ù. |
|
¾Ë¾ÆµÎ¼¼¿ä!!! |
µµ¸Å»ó ¹× Á¦ÀÛ»ç »çÁ¤¿¡ µû¶ó Ç°Àý/ÀýÆÇ µîÀÇ »çÀ¯·Î Ãë¼ÒµÉ ¼ö ÀÖ½À´Ï´Ù.
¿ÀǸ¶ÄϾ÷üÀÇ ¹è¼ÛÁö¿¬½Ã ÁÖ¹®ÀÌ ÀÚµ¿À¸·Î Ãë¼ÒµÉ ¼ö ÀÖ½À´Ï´Ù.
Ãâ°í°¡´É ½Ã°£ÀÌ ¼·Î ´Ù¸¥ »óÇ°À» ÇÔ²² ÁÖ¹®ÇÒ °æ¿ì Ãâ°í°¡´É ½Ã°£ÀÌ °¡Àå ±ä ±âÁØÀ¸·Î ¹è¼ÛµË´Ï´Ù.
À¯ÅëÀÇ Æ¯¼º»ó Ãâ°í±â°£Àº ¿¹Á¤º¸´Ù ¾Õ´ç°ÜÁö°Å³ª ´ÊÃçÁú ¼ö ÀÖ½À´Ï´Ù.
Åùè»ç ¹è¼ÛÀÏÀÎ ¼¿ï ¹× ¼öµµ±ÇÀº 1~2ÀÏ, Áö¹æÀº 2~3ÀÏ, µµ¼, »ê°£, ±ººÎ´ë´Â 3ÀÏ ÀÌ»óÀÇ ½Ã°£ÀÌ ¼Ò¿äµË´Ï´Ù. |
|
|
|
|