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

½ºÇÁ¸µ ºÎÆ® ÇÙ½É °¡À̵å : ½ºÇÁ¸µ ºÎÆ®¸¦ È°¿ëÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß ½Ç¹«
½ºÇÁ¸µ ºÎÆ® ÇÙ½É °¡À̵å : ½ºÇÁ¸µ ºÎÆ®¸¦ È°¿ëÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß ½Ç¹«
  • ÀúÀÚÀåÁ¤¿ì Àú
  • ÃâÆÇ»çÀ§Å°ºÏ½º
  • ÃâÆÇÀÏ2022-08-17
  • µî·ÏÀÏ2022-09-26
º¸À¯ 2, ´ëÃâ 0, ¿¹¾à 0, ´©Àû´ëÃâ 11, ´©Àû¿¹¾à 1

Ã¥¼Ò°³

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

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

ÀúÀÚ¼Ò°³

»ï¼º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 Á¤¸® 

ÇÑÁÙ ¼­Æò