ÄÁÅÙÃ÷»ó¼¼º¸±â

½ºÇÁ¸µ ºÎÆ® ÇÙ½É °¡À̵å - ½ºÇÁ¸µ ºÎÆ®¸¦ È°¿ëÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß ½Ç¹« (Ä¿¹öÀ̹ÌÁö)
¾Ë¶óµò
½ºÇÁ¸µ ºÎÆ® ÇÙ½É °¡À̵å - ½ºÇÁ¸µ ºÎÆ®¸¦ È°¿ëÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß ½Ç¹«
  • ÆòÁ¡ÆòÁ¡Á¡Æò°¡¾øÀ½
  • ÀúÀÚÀåÁ¤¿ì (ÁöÀºÀÌ) 
  • ÃâÆÇ»çÀ§Å°ºÏ½º 
  • ÃâÆÇÀÏ2022-06-24 
º¸À¯ 1, ´ëÃâ 0, ¿¹¾à 0, ´©Àû´ëÃâ 0, ´©Àû¿¹¾à 0

Ã¥¼Ò°³

ÀÔ¹®ÀÚÀÇ ´«³ôÀÌ¿¡ ¸ÂÃç Â÷±ÙÂ÷±Ù µû¶ó Çϸ鼭 ¹è¿ì´Â ½ºÇÁ¸µ ºÎÆ® ÀÔ¹®¼­!

¡¶½ºÇÁ¸µ ºÎÆ® ÇÙ½É °¡À̵塷´Â ½ºÇÁ¸µ ºÎÆ® ±â¹ÝÀÇ ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÒ ¶§ ÇÊ¿äÇÑ ±âÃÊÀûÀÎ ³»¿ëµéÀ» ¼Ò°³ÇÏ°í, ½ºÇÁ¸µ¿¡¼­ Á¦°øÇÏ´Â °¢Á¾ ¶óÀ̺귯¸®ÀÇ ±â´ÉµéÀ» ÀÌÇØÇÒ ¼ö ÀÖ°Ô µ¿ÀÛ ¿ø¸®¸¦ »ó¼¼È÷ ¼³¸íÇÕ´Ï´Ù. ¶ÇÇÑ '½ºÇÁ¸µ ºÎÆ®'´Ù¿î Äڵ带 ÀÛ¼ºÇÏ´Â ¹æ¹ý¿¡ ÃÊÁ¡À» ¸ÂÃç ½ºÇÁ¸µ ºÎÆ®¿¡¼­ Á¦°øÇÏ´Â ÆíÀÇ ±â´ÉµéÀ» ÃÖ´ëÇÑ È°¿ëÇÏ°í, ½ºÇÁ¸µ ºÎÆ® ±â¹ÝÀÇ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¾î¶»°Ô ¼³°èÇÏ°í ±¸ÇöÇÏ´ÂÁö ¾È³»ÇÕ´Ï´Ù.

¡Ú ÀÌ Ã¥¿¡¼­ ´Ù·ç´Â ³»¿ë ¡Ú

¡Ý ½ºÇÁ¸µ ºÎÆ® ±âÃÊ
¡Ý REST APIÀÇ ÀÛ¼º ¹æ¹ý
¡Ý Spring Data JPA
¡Ý ¿¬°ü°ü°è ¸ÅÇÎ
¡Ý Å×½ºÆ® ÄÚµå ÀÛ¼º
¡Ý Å×½ºÆ® Ä¿¹ö¸®Áö
¡Ý À¯È¿¼º °Ë»ç
¡Ý ¿¹¿Ü ó¸®
¡Ý ¾×Ãß¿¡ÀÌÅÍ
¡Ý REST Åë½Å
¡Ý ¼­ºñ½ºÀÇ ÀÎÁõ°ú Àΰ¡

ÀúÀÚ¼Ò°³

»ï¼ºSDS¿¡¼­ ÀÎÇÁ¶ó ¿£Áö´Ï¾î ¹× ¹é¿£µå °³¹ßÀÚ·Î ±Ù¹«ÇßÀ¸¸ç, ÇöÀç´Â À§´ëÇÑ»ó»ó¿¡¼­ °áÁ¦ ½Ã½ºÅÛ °³¹ß ¾÷¹«¸¦ ´ã´çÇÏ°í ÀÖ½À´Ï´Ù. ±×¸®°í À¯Æ©ºê ¡´¾î¶ó¿îµåÇãºê ½ºÆ©µð¿À¡µ¸¦ ¿î¿µÇϸ鼭 ÇÁ·Î±×·¡¹Ö Á¤º¸¸¦ °øÀ¯ÇÏ°í ÀÖ½À´Ï´Ù.

¸ñÂ÷

¢Ã 01Àå: ½ºÇÁ¸µ ºÎÆ®¶õ?

1.1 ½ºÇÁ¸µ ÇÁ·¹ÀÓ¿öÅ©

__1.1.1 Á¦¾î ¿ªÀü(IoC)

__1.1.2 ÀÇÁ¸¼º ÁÖÀÔ(DI)

__1.1.3 °üÁ¡ ÁöÇâ ÇÁ·Î±×·¡¹Ö(AOP)

__1.1.4 ½ºÇÁ¸µ ÇÁ·¹ÀÓ¿öÅ©ÀÇ ´Ù¾çÇÑ ¸ðµâ

1.2 ½ºÇÁ¸µ ÇÁ·¹ÀÓ¿öÅ© vs. ½ºÇÁ¸µ ºÎÆ®

__1.2.1 ÀÇÁ¸¼º °ü¸®

__1.2.2 ÀÚµ¿ ¼³Á¤

__1.2.3 ³»Àå WAS

__1.2.4 ¸ð´ÏÅ͸µ



¢Ã 02Àå: °³¹ß¿¡ ¾Õ¼­ ¾Ë¸é ÁÁÀº ±âÃÊ Áö½Ä

2.1 ¼­¹ö °£ Åë½Å

2.2 ½ºÇÁ¸µ ºÎÆ®ÀÇ µ¿ÀÛ ¹æ½Ä

2.3 ·¹À̾îµå ¾ÆÅ°ÅØó

2.4 µðÀÚÀÎ ÆÐÅÏ

__2.4.1 µðÀÚÀÎ ÆÐÅÏÀÇ Á¾·ù

__2.4.2 »ý¼º ÆÐÅÏ

__2.4.3 ±¸Á¶ ÆÐÅÏ

__2.4.4 ÇàÀ§ ÆÐÅÏ

2.5 REST API

__2.5.1 REST¶õ?

__2.5.2 REST API¶õ?

__2.5.3 RESTÀÇ Æ¯Â¡

__2.5.4 RESTÀÇ URI ¼³°è ±ÔÄ¢



¢Ã 03Àå: °³¹ß ȯ°æ ±¸¼º

3.1 ÀÚ¹Ù JDK ¼³Ä¡

3.2 ÀÎÅÚ¸®Á¦ÀÌ IDEA ¼³Ä¡



¢Ã 04Àå: ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÇϱâ

4.1 ÇÁ·ÎÁ§Æ® »ý¼º

__4.1.1 ÀÎÅÚ¸®Á¦ÀÌ IDEA¿¡¼­ ÇÁ·ÎÁ§Æ® »ý¼ºÇϱâ

__4.1.2 ½ºÇÁ¸µ °ø½Ä »çÀÌÆ®¿¡¼­ ÇÁ·ÎÁ§Æ® »ý¼ºÇϱâ

4.2 pom.xml(Project Object Model) »ìÆ캸±â

__4.2.1 ºôµå °ü¸® µµ±¸

__4.2.2 ¸ÞÀ̺ì

__4.3 Hello World Ãâ·ÂÇϱâ

__4.3.1 ÄÁÆ®·Ñ·¯ ÀÛ¼ºÇϱâ

__4.3.2 ¾ÖÇø®ÄÉÀÌ¼Ç ½ÇÇàÇϱâ

__4.3.3 À¥ ºê¶ó¿ìÀú¸¦ ÅëÇÑ µ¿ÀÛ Å×½ºÆ®

__4.3.4 Talend API Tester¸¦ ÅëÇÑ µ¿ÀÛ Å×½ºÆ®



¢Ã 05Àå: API¸¦ ÀÛ¼ºÇÏ´Â ´Ù¾çÇÑ ¹æ¹ý

5.1 ÇÁ·ÎÁ§Æ® ¼³Á¤

5.2 GET API ¸¸µé±â

__5.2.1 @RequestMappingÀ¸·Î ±¸ÇöÇϱâ

__5.2.2 ¸Å°³º¯¼ö°¡ ¾ø´Â GET ¸Þ¼­µå ±¸Çö

__5.2.3 @PathVariableÀ» È°¿ëÇÑ GET ¸Þ¼­µå ±¸Çö

__5.2.4 @RequestParamÀ» È°¿ëÇÑ GET ¸Þ¼­µå ±¸Çö

__5.2.5 DTO °´Ã¼¸¦ È°¿ëÇÑ GET ¸Þ¼­µå ±¸Çö

5.3 POST API ¸¸µé±â

__5.3.1 @RequestMappingÀ¸·Î ±¸ÇöÇϱâ

__5.3.2 @RequestBody¸¦ È°¿ëÇÑ POST ¸Þ¼­µå ±¸Çö

5.4 PUT API ¸¸µé±â

__5.4.1 @RequestBody¸¦ È°¿ëÇÑ PUT ¸Þ¼­µå ±¸Çö

__5.4.2 ResponseEntity¸¦ È°¿ëÇÑ PUT ¸Þ¼­µå ±¸Çö

5.5 DELETE API ¸¸µé±â

__5.5.1 @PathVariable°ú @RequestParamÀ» È°¿ëÇÑ DELETE ¸Þ¼­µå ±¸Çö

5.6 [ ÇÑ°ÉÀ½ ´õ ] REST API ¸í¼¼¸¦ ¹®¼­È­ÇÏ´Â ¹æ¹ý - Swagger

5.7 [ ÇÑ°ÉÀ½ ´õ ] ·Î±ë ¶óÀ̺귯¸® - Logback

__5.7.1 Logback ¼³Á¤

__5.7.2 Logback Àû¿ëÇϱâ

5.8 Á¤¸®



¢Ã 06Àå: µ¥ÀÌÅͺ£À̽º ¿¬µ¿

6.1 ¸¶¸®¾ÆDB ¼³Ä¡

6.2 ORM

6.3 JPA

6.4 ÇÏÀ̹ö³×ÀÌÆ®

__6.4.1 Spring Data JPA

6.5 ¿µ¼Ó¼º ÄÁÅؽºÆ®

__6.5.1 ¿£Æ¼Æ¼ ¸Å´ÏÀú

__6.5.2 ¿£Æ¼Æ¼ÀÇ »ý¸íÁÖ±â

6.6 µ¥ÀÌÅͺ£À̽º ¿¬µ¿

__6.6.1 ÇÁ·ÎÁ§Æ® »ý¼º

6.7 ¿£Æ¼Æ¼ ¼³°è

__6.7.1 ¿£Æ¼Æ¼ °ü·Ã ±âº» ¾î³ëÅ×À̼Ç

6.8 ¸®Æ÷ÁöÅ丮 ÀÎÅÍÆäÀ̽º ¼³°è

__6.8.1 ¸®Æ÷ÁöÅ丮 ÀÎÅÍÆäÀ̽º »ý¼º

__6.8.2 ¸®Æ÷ÁöÅ丮 ¸Þ¼­µåÀÇ »ý¼º ±ÔÄ¢

6.9 DAO ¼³°è

__6.9.1 DAO Ŭ·¡½º »ý¼º

6.10 DAO ¿¬µ¿À» À§ÇÑ ÄÁÆ®·Ñ·¯¿Í ¼­ºñ½º ¼³°è

__6.10.1 ¼­ºñ½º Ŭ·¡½º ¸¸µé±â

__6.10.2 ÄÁÆ®·Ñ·¯ »ý¼º

__6.10.3 Swagger API¸¦ ÅëÇÑ µ¿ÀÛ È®ÀÎ

6.11 [ÇÑ°ÉÀ½ ´õ] ¹Ýº¹µÇ´Â ÄÚµåÀÇ ÀÛ¼ºÀ» »ý·«ÇÏ´Â ¹æ¹ý - ·Òº¹

__6.11.1 ·Òº¹ ¼³Ä¡

__6.11.2 ·Òº¹ Àû¿ë

__6.11.3 ·Òº¹ÀÇ ÁÖ¿ä ¾î³ëÅ×À̼Ç



¢Ã 07Àå: Å×½ºÆ® ÄÚµå ÀÛ¼ºÇϱâ

7.1 Å×½ºÆ® Äڵ带 ÀÛ¼ºÇÏ´Â ÀÌÀ¯

7.2 ´ÜÀ§ Å×½ºÆ®¿Í ÅëÇÕ Å×½ºÆ®

__7.2.1 ´ÜÀ§ Å×½ºÆ®ÀÇ Æ¯Â¡

__7.2.2 ÅëÇÕ Å×½ºÆ®ÀÇ Æ¯Â¡

7.3 Å×½ºÆ® Äڵ带 ÀÛ¼ºÇÏ´Â ¹æ¹ý

__7.3.1 Given-When-Then ÆÐÅÏ

__7.3.2 ÁÁÀº Å×½ºÆ®¸¦ ÀÛ¼ºÇÏ´Â 5°¡Áö ¼Ó¼º(F.I.R.S.T)

7.4 JUnitÀ» È°¿ëÇÑ Å×½ºÆ® ÄÚµå ÀÛ¼º

__7.4.1 JUnitÀÇ ¼¼ºÎ ¸ðµâ

__7.4.2 ½ºÇÁ¸µ ºÎÆ® ÇÁ·ÎÁ§Æ® »ý¼º

__7.4.3 ½ºÇÁ¸µ ºÎÆ®ÀÇ Å×½ºÆ® ¼³Á¤

__7.4.4 JUnitÀÇ »ý¸íÁÖ±â

__7.4.5 ½ºÇÁ¸µ ºÎÆ®¿¡¼­ÀÇ Å×½ºÆ®

__7.4.6 ÄÁÆ®·Ñ·¯ °´Ã¼ÀÇ Å×½ºÆ®

__7.4.7 ¼­ºñ½º °´Ã¼ÀÇ Å×½ºÆ®

__7.4.8 ¸®Æ÷ÁöÅ丮 °´Ã¼ÀÇ Å×½ºÆ®

7.5 JaCoCo¸¦ È°¿ëÇÑ Å×½ºÆ® Ä¿¹ö¸®Áö È®ÀÎ

__7.5.1 JaCoCo Ç÷¯±×ÀÎ ¼³Á¤

__7.5.2 JaCoCo Å×½ºÆ® Ä¿¹ö¸®Áö È®ÀÎ

7.6 Å×½ºÆ® ÁÖµµ °³¹ß(TDD)

__7.6.1 Å×½ºÆ® ÁÖµµ °³¹ßÀÇ °³¹ß ÁÖ±â

__7.6.2 Å×½ºÆ® ÁÖµµ °³¹ßÀÇ È¿°ú

7.7 Á¤¸®



¢Ã 08Àå: Spring Data JPA È°¿ë

8.1 ÇÁ·ÎÁ§Æ® »ý¼º

8.2 JPQL

8.3 Äõ¸® ¸Þ¼­µå »ìÆ캸±â

__8.3.1 Äõ¸® ¸Þ¼­µåÀÇ »ý¼º

__8.3.2 Äõ¸® ¸Þ¼­µåÀÇ ÁÖÁ¦ Å°¿öµå

__8.3.3 Äõ¸® ¸Þ¼­µåÀÇ Á¶°ÇÀÚ Å°¿öµå

8.4 Á¤·Ä°ú ÆäÀÌ¡ ó¸®

__8.4.1 Á¤·Ä ó¸®Çϱâ

__8.4.2 ÆäÀÌ¡ ó¸®

8.5 @Query ¾î³ëÅ×ÀÌ¼Ç »ç¿ëÇϱâ

8.6 QueryDSL Àû¿ëÇϱâ

__8.6.1 QueryDSLÀ̶õ?

__8.6.2 QueryDSLÀÇ ÀåÁ¡

__8.6.3 QueryDSLÀ» »ç¿ëÇϱâ À§ÇÑ ÇÁ·ÎÁ§Æ® ¼³Á¤

__8.6.4 ±âº»ÀûÀÎ QueryDSL »ç¿ëÇϱâ

__8.6.5 QuerydslPredicateExecutor, QuerydslRepositorySupport È°¿ë

8.7 [ ÇÑ°ÉÀ½ ´õ ] JPA Auditing Àû¿ë

__8.7.1 JPA Auditing ±â´É È°¼ºÈ­

__8.7.2 BaseEntity ¸¸µé±â

8.8 Á¤¸®





¢Ã 09Àå: ¿¬°ü°ü°è ¸ÅÇÎ

9.1 ¿¬°ü°ü°è ¸ÅÇÎ Á¾·ù¿Í ¹æÇâ

9.2 ÇÁ·ÎÁ§Æ® »ý¼º

9.3 ÀÏ´ëÀÏ ¸ÅÇÎ

__9.3.1 ÀÏ´ëÀÏ ´Ü¹æÇâ ¸ÅÇÎ

__9.3.2 ÀÏ´ëÀÏ ¾ç¹æÇâ ¸ÅÇÎ

9.4 ´Ù´ëÀÏ, ÀÏ´ë´Ù ¸ÅÇÎ

__9.4.1 ´Ù´ëÀÏ ´Ü¹æÇâ ¸ÅÇÎ

__9.4.2 ´Ù´ëÀÏ ¾ç¹æÇâ ¸ÅÇÎ

__9.4.3 ÀÏ´ë´Ù ´Ü¹æÇâ ¸ÅÇÎ

9.5 ´Ù´ë´Ù ¸ÅÇÎ

__9.5.1 ´Ù´ë´Ù ´Ü¹æÇâ ¸ÅÇÎ

__9.5.2 ´Ù´ë´Ù ¾ç¹æÇâ ¸ÅÇÎ

9.6 ¿µ¼Ó¼º ÀüÀÌ

__9.6.1 ¿µ¼Ó¼º ÀüÀÌ Àû¿ë

__9.6.2 °í¾Æ °´Ã¼

9.7 Á¤¸®



¢Ã 10Àå: À¯È¿¼º °Ë»ç¿Í ¿¹¿Ü ó¸®

10.1 ÀϹÝÀûÀÎ ¾ÖÇø®ÄÉÀÌ¼Ç À¯È¿¼º °Ë»çÀÇ ¹®Á¦Á¡

10.2 Hibernate Validator

10.3 ½ºÇÁ¸µ ºÎÆ®¿¡¼­ÀÇ À¯È¿¼º °Ë»ç

__10.3.1 ÇÁ·ÎÁ§Æ® »ý¼º

__10.3.2 ½ºÇÁ¸µ ºÎÆ®¿ë À¯È¿¼º °Ë»ç °ü·Ã ÀÇÁ¸¼º Ãß°¡

__10.3.3 ½ºÇÁ¸µ ºÎÆ®ÀÇ À¯È¿¼º °Ë»ç

__10.3.4 @Validated È°¿ë

__10.3.5 Ä¿½ºÅÒ Validation Ãß°¡

10.4 ¿¹¿Ü ó¸®

__10.4.1 ¿¹¿Ü¿Í ¿¡·¯

__10.4.2 ¿¹¿Ü Ŭ·¡½º

__10.4.3 ¿¹¿Ü ó¸® ¹æ¹ý

__10.4.4 ½ºÇÁ¸µ ºÎÆ®ÀÇ ¿¹¿Ü ó¸® ¹æ½Ä

__10.4.5 Ä¿½ºÅÒ ¿¹¿Ü

__10.4.6 Ä¿½ºÅÒ ¿¹¿Ü Ŭ·¡½º »ý¼ºÇϱâ



¢Ã 11Àå: ¾×Ãß¿¡ÀÌÅÍ È°¿ëÇϱâ

11.1 ÇÁ·ÎÁ§Æ® »ý¼º ¹× ¾×Ãß¿¡ÀÌÅÍ Á¾¼Ó¼º Ãß°¡

11.2 ¿£µåÆ÷ÀÎÆ®

11.3 ¾×Ãß¿¡ÀÌÅÍ ±â´É »ìÆ캸±â

__11.3.1 ¾ÖÇø®ÄÉÀÌ¼Ç ±âº» Á¤º¸(/info)

__11.3.2 ¾ÖÇø®ÄÉÀÌ¼Ç »óÅÂ(/health)

__11.3.3 ºó Á¤º¸ È®ÀÎ(/beans)

__11.3.4 ½ºÇÁ¸µ ºÎÆ®ÀÇ ÀÚµ¿¼³Á¤ ³»¿ª È®ÀÎ(/conditions)

__11.3.5 ½ºÇÁ¸µ ȯ°æº¯¼ö Á¤º¸(/env)

__11.3.6 ·Î±ë ·¹º§ È®ÀÎ(/loggers)

11.4 ¾×Ãß¿¡ÀÌÅÍ¿¡ Ä¿½ºÅÒ ±â´É ¸¸µé±â

__11.4.1 Á¤º¸ Á¦°ø ÀÎÅÍÆäÀ̽ºÀÇ ±¸Çöü »ý¼º

__11.4.2 Ä¿½ºÅÒ ¿£µåÆ÷ÀÎÆ® »ý¼º



¢Ã 12Àå: ¼­¹ö °£ Åë½Å

12.1 RestTemplateÀ̶õ?

__12.1.1 RestTemplateÀÇ µ¿ÀÛ ¿ø¸®

__12.1.2 RestTemplateÀÇ ´ëÇ¥ÀûÀÎ ¸Þ¼­µå

12.2 RestTemplate »ç¿ëÇϱâ

__12.2.1 ¼­¹ö ÇÁ·ÎÁ§Æ® »ý¼ºÇϱâ

__12.2.2 RestTemplate ±¸ÇöÇϱâ

__12.2.3 RestTemplate Ä¿½ºÅÒ ¼³Á¤

12.3 WebClient¶õ?

__12.3.1 WebClient ±¸¼º

12.4 WebClient »ç¿ëÇϱâ

__12.4.1 WebClient ±¸Çö

12.5 Á¤¸®



¢Ã 13Àå: ¼­ºñ½ºÀÇ ÀÎÁõ°ú ±ÇÇÑ ºÎ¿©

13.1 º¸¾È ¿ë¾î ÀÌÇØ

__13.1.1 ÀÎÁõ

__13.1.2 Àΰ¡

__13.1.3 Á¢±Ù ÁÖü

13.2 ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼

13.3 ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ÀÇ µ¿ÀÛ ±¸Á¶

13.4 JWT

__13.4.1 JWTÀÇ ±¸Á¶

__13.4.2 JWT µð¹ö°Å »ç¿ëÇϱâ

13.5 ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼¿Í JWT Àû¿ë

__13.5.1 UserDetails¿Í UserDetailsService ±¸Çö

__13.5.2 JwtTokenProvider ±¸Çö

__13.5.3 JwtAuthenticationFilter ±¸Çö

__13.5.4 SecurityConfiguration ±¸Çö

__13.5.5 Ä¿½ºÅÒ AccessDeniedHandler, AuthenticationEntryPoint ±¸Çö

__13.5.6 ȸ¿ø°¡ÀÔ°ú ·Î±×ÀÎ ±¸Çö

__13.5.7 ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ Å×½ºÆ®

13.6 Á¤¸®

ÇÑÁÙ ¼­Æò