»ó¼¼Á¤º¸
Ã¥¼Ò°³
ÀÚ¹Ù ±â¹ÝÀÇ À¥ ¼ºñ½º¸¦ °¡Àå ½±°í ºü¸£°Ô ¹è¿î´Ù!
½ÃÁß¿¡´Â ÀÚ¹Ù À¥ °³¹ßÀÚ¸¦ À§ÇÑ ½ºÇÁ¸µ°ú JSP °ü·Ã ¼ÀûÀÌ ¸¹ÀÌ ³ª¿Í ÀÖ±ä ÇÏÁö¸¸, ÀÔ¹®ÀÚ°¡ ³¡±îÁö µû¶ó ÇÒ ¸¸ÇÑ Ã¥Àº ¸¹Áö ¾Ê½À´Ï´Ù. ÀÌ Ã¥Àº µ¶ÀÚµéÀÌ ÀÚ¹Ù ±â¹ÝÀÇ À¥ ¼ºñ½º¸¦ ¸¸µé°Å³ª °øºÎÇÒ ¶§ °¡Àå ½±°Ô µû¶ó ÇÒ ¼ö ÀÖµµ·Ï ÁýÇʵǾú½À´Ï´Ù. ÀÚ¹Ù À¥ °³¹ß ȯ°æ¿¡ ´ëÇÑ ±âÃÊ ¼³¸í°ú °³¹ß¿¡ ÇÊ¿äÇÑ Çʼö ±â¼úÀ» ´Ù·ç¸ç, ³ª¾Æ°¡ ¸ð´ÏÅ͸µ ¹× Çì·ÎÄí¸¦ ÀÌ¿ëÇÑ Å¬¶ó¿ìµå ¹èÆ÷±îÁö À¥ ¼ºñ½º¿¡ ÇÊ¿äÇÑ Àü¹ÝÀûÀÎ ³»¿ëÀ» ´ã°í ÀÖ½À´Ï´Ù.
ÀúÀÚ¼Ò°³
ÇöÀç ³×À̹ö¿¡¼ µ¿¿µ»ó Ç÷§Æû °³¹ß ¾÷¹«¸¦ ´ã´çÇÏ°í ÀÖÀ¸¸ç, ¹é¿ÀÇǽº ±¸Ãà°ú ÇÁ·¹ÀÓ¿öÅ© ¼³°è ¹× °³¹ß¿¡ °ü½ÉÀÌ ¸¹´Ù. Àú¼·Î´Â ¡¶¿£ÅÍÇÁ¶óÀÌÁî ºôµå ÀÚµ¿È¸¦ À§ÇÑ Gradle¡·(ÇѺû¹Ìµð¾î)ÀÌ ÀÖ´Ù. www.facebook.com/thecodinglive
¸ñÂ÷
CHAPTER 1 °³¹ß ȯ°æÀÇ º¯È¿Í ÀÚ¹Ù ¡¤ 1
1.1 ÀÎÇÁ¶ó¿Í ½ºÇÁ¸µ ÇÁ·¹ÀÓ¿öÅ©ÀÇ º¯È 3
1.1.1 ¾ÆÅ°ÅØóÀÇ º¯È 3
1.1.2 ½ºÇÁ¸µ ÇÁ·¹ÀÓ¿öÅ©ÀÇ º¯È 5
1.2 À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ÄÁÅ×ÀÌ³Ê 6
1.2.1 ÀÚ¹Ù °³¹ßÀ» À§ÇØ ²À ÇÊ¿äÇÑ Å¬·¡½º ·Î´õ 6
1.3 WAR ÆÄÀÏÀÇ Æ¯¼º 8
CHAPTER 2 ¼ºí¸´ ¡¤ 11
2.1 ¼ºí¸´ ½ÃÀÛÇϱâ 13
2.1.1 ¼ºí¸´ ¼³Á¤ 13
2.2 ¼ºí¸´ ³»ºÎ µ¿ÀÛ 16
2.2.1 ¼ºí¸´ÀÇ »ý¸íÁÖ±â 16
2.3 ¼ºí¸´ È°¿ë 20
2.3.1 HTTP ¿äû°ú ÀÀ´ä 20
2.3.2 ¸ÖƼÆÄÆ® 24
2.4 ¼ºí¸´ °ü·Ã °´Ã¼µé 28
2.4.1 ÇÊÅÍ 28
2.4.2 ÄíÅ° 30
2.4.3 ¼¼¼Ç 36
2.5 µðÀÚÀÎ ÆÐÅÏ È°¿ë 40
2.5.1 Java EE ÆÐÅÏ 40
2.5.2 ÇÁ·ÐÆ® ÄÁÆ®·Ñ·¯ ÆÐÅÏ 41
CHAPTER 3 ½ºÇÁ¸µ ÇÁ·¹ÀÓ¿öÅ© ¡¤ 49
3.1 ºó ÄÁÅ×ÀÌ³Ê 51
3.2 IoC ÆÐÅÏ È°¿ë 52
3.2.1 ÀÎÅÍÆäÀ̽º¿Í ½ºÇÁ¸µ 53
3.2.2 ½ºÇÁ¸µ XML ¼³Á¤ 56
3.2.3 ½ºÇÁ¸µ JavaConfig ¼³Á¤ 63
3.3 ½ºÇÁ¸µ MVC 69
3.3.1 ½ºÇÁ¸µ MVC ±¸Á¶ 69
3.3.2 ½ºÇÁ¸µ MVC ¼³Á¤ 70
3.3.3 DispatcherServlet ¼³Á¤ 72
3.3.4 ÄÁÆ®·Ñ·¯¿Í ºä 73
3.3.5 ÀÎÅͼÁÅÍ 75
CHAPTER 4 ½ºÇÁ¸µ ºÎÆ® À¥ °³¹ß ¡¤ 81
4.1 ½ºÇÁ¸µ ºÎÆ®¿¡ ´ëÇÑ ÀÌÇØ 83
4.1.1 ½ºÇÁ¸µ ºÎÆ®ÀÇ ÇÁ·ÎÁ§Æ® ·¹À̾ƿô 83
4.1.2 ½ºÇÁ¸µ ºÎÆ® ½ÇÇàÇϱâ 84
4.2 Á¤Àû ÀÚ¿ø °ü¸® 94
4.2.1 Á¤Àû ÀÚ¿ø ±âº» ¼³Á¤ 94
4.2.2 À¥ ¸®¼Ò½º Æú´õ ¼³Á¤ 96
4.3 ÅÛÇø´ ¿£Áø 100
4.3.1 ŸÀÓ¸®ÇÁ Àû¿ë 101
4.3.2 ŸÀÓ¸®ÇÁ ¼Ó¼º 102
4.4 WebJars¸¦ ÀÌ¿ëÇÑ ÇÁ·ÐÆ®¶óÀ̺귯¸® °ü¸® 108
4.4.1 WebJars Àû¿ë 109
4.4.2 ÀÎÅͼÁÅÍ È°¿ë 113
CHAPTER 5 REST API ¼¹ö ¸¸µé±â ¡¤ 117
5.1 REST 119
5.1.1 RESTÀÇ Æ¯¼º°ú ±ÔÄ¢ 119
5.2 ¸®¼Ò½º 121
5.2.1 ¸®¼Ò½ºÀÇ ±¸ºÐ 121
5.3 REST API ¸¸µé±â 122
5.3.1 REST ÄÁÆ®·Ñ·¯ È°¿ë 122
5.3.2 REST API¿¡¼ HTTP Method »ç¿ë 125
5.3.3 ½ºÇÁ¸µ¿¡¼ URI ÅÛÇø´ È°¿ë 127
5.4 HATEOS¸¦ ÀÌ¿ëÇÑ ÀÚ±âÁÖ¼ÒÁ¤º¸ Ç¥Çö 128
5.4.1 HATEOS¸¦ ÀÌ¿ëÇÑ URI Á¤º¸ Ç¥Çö 129
5.5 REST API ¹®¼È 131
5.5.1 swagger ¼³Á¤ ¹× ¶óÀ̺귯¸® Ãß°¡ 131
5.5.2 ÄÁÆ®·Ñ·¯ URL °æ·Î ¼³Á¤ 133
5.5.3 HTTP ¸Þ¼µåº° È®ÀÎ 134
5.5.4 ÆĶó¹ÌÅÍ °ËÁõ 136
5.6 REST Ŭ¶óÀ̾ðÆ® °³¹ß 137
5.6.1 RestTemplate 137
5.6.2 UriComponentsBuilder È°¿ë 139
5.6.3 HTTP ¸Þ¼µåº° RestTemplate ¸Þ¼µå ¸í¼¼ 141
CHAPTER 6 ½ºÇÁ¸µ ºÎÆ®¿Í µ¥ÀÌÅÍ ¡¤ 149
6.1 µ¥ÀÌÅͺ£À̽º ÇÁ·Î±×·¡¹Ö 151
6.1.1 ÇÁ·ÎÁ§Æ® ±¸¼º 151
6.2 ORM µµ±¸ÀÇ È°¿ë 152
6.2.1 Spring Data JPA 153
6.2.2 µ¥ÀÌÅͺ£À̽º¿Í °´Ã¼ ¸ÅÇÎ 156
6.2.3 ¿¬°ü °ü°è 163
6.3 QueryDSLÀ» ÀÌ¿ëÇÑ Type SafeÇÑ Äõ¸® ÀÛ¼º 172
6.3.1 QueryDSL ¼³Á¤ 172
6.3.2 QueryDslRepositorySupport È°¿ë 176
6.4 Äõ¸® ¸ÅÆÛ 182
6.4.1 MyBatis 182
6.4.2 MyBatis¸¦ ÀÌ¿ëÇÑ Äõ¸® ½ÇÇà 186
6.4.3 ¸í½ÃÀûÀÎ DataSource ÁöÁ¤ 193
6.5 µ¥ÀÌÅͺ£À̽º ¼¹ö¿Í ¿¬µ¿ 195
6.5.1 MariaDB ¼³Ä¡ 195
6.5.2 MariaDB client µµ±¸¸¦ ÀÌ¿ëÇÑ ¼¹ö Á¢¼Ó 197
6.6 Database Connection pool ¼³Á¤ 199
6.6.1 HikariCP 200
6.6.2 MyBatis¿Í MariaDB ¿¬µ¿ 205
6.7 MyBatisÀÇ °í±Þ ±â´É È°¿ë 208
6.7.1 selectKey 208
6.7.2 µ¿Àû Äõ¸® ÅÂ±× 216
CHAPTER 7 Ä¿½ºÅÒ ½ºÇÁ¸µ ºÎÆ® ½ºÅ¸ÅÍ ¡¤ 221
7.1 ¾î³ëÅ×ÀÌ¼Ç 223
7.1.1 ¾î³ëÅ×ÀÌ¼Ç ¸¸µé±â 223
7.1.2 ½ºÇÁ¸µ ºÎÆ® ¾î³ëÅ×ÀÌ¼Ç 226
7.2 ½ºÇÁ¸µ ºÎÆ®ÀÇ ±¸¼º ¿ä¼Ò 238
7.2.1 ½ºÇÁ¸µ ºÎÆ® ¸ðµâ 238
7.3 ½ºÇÁ¸µ ºÎÆ® ½ºÅ¸ÅÍ ¸¸µé±â 243
7.3.1 ½ºÅ¸ÅÍ °³¹ß ȯ°æ ±¸Ãà 244
CHAPTER 8 ¿¹¿Ü ó¸® ¹× Å×½ºÆ® ¡¤ 249
8.1 ÀÚ¹Ù ¿¹¿Ü ó¸® 251
8.1.1 throw¿Í throws ±¸¹® È°¿ë 251
8.2 Validation È°¿ë 253
8.2.1 Çʵ忡 validation Àû¿ë 257
8.3 ¿¹¿Ü 󸮸¦ À§ÇÑ ControllerAdvice 259
8.3.1 Controller¿¡ ´ëÇÑ ¿¹¿Ü ó¸® 259
8.4 µ¥ÀÌÅͺ£À̽º ¿¹¿Ü ó¸® 264
8.4.1 Æ®·£Àè¼Ç 264
8.4.2 PlatformTransactionManager 265
8.5 ½ºÇÁ¸µ ºÎÆ® Å×½ºÆ® 269
8.5.1 µ¥ÀÌÅͺ£À̽º ¿¬µ¿ Å×½ºÆ® 269
8.5.2 ÅëÇÕ Å×½ºÆ® 274
CHAPTER 9 ¹èÆ÷ ¡¤ 281
9.1 ºôµå 283
9.1.1 Runnable JAR 283
9.2 À¥ ¼ºñ½º¸¦ À§ÇÑ ¹èÆ÷ 288
9.2.1 Ŭ¶ó¿ìµå ¼ºñ½º¿¡ ¹èÆ÷ 288
CHAPTER 10 ¸ð´ÏÅ͸µ ¡¤ 299
10.1 ¾×Ãß¿¡ÀÌÅÍ 301
10.1.1 ¾×Ãß¿¡ÀÌÅÍ Àû¿ë 301
10.1.2 ÁöÇ¥ Á¤º¸ È°¿ë 303
10.1.3 ±âº» ¼³Á¤ º¯°æ 307
10.2 JMX¿Í JConsoleÀ» ÀÌ¿ëÇÑ ¸ð´ÏÅ͸µ 308
10.2.1 JConsole 308
CHAPTER 11 ij½Ã ¡¤ 311
11.1 ij½ÃÀÇ À¯Çü 313
11.1.1 À§Ä¡¿¡ µû¸¥ ij½Ã ±¸ºÐ 313
11.1.2 À¯Çü¿¡ µû¸¥ ±¸ºÐ 314
11.1.3 ij½Ã µ¥ÀÌÅÍ ÀúÀå ¹æ½Ä 314
11.2 ½ºÇÁ¸µ ij½Ã 315
11.2.1 ij½Ã Àû¿ëÀ» À§ÇÑ ±âº» ¿¹Á¦ 316
11.2.2 ½ºÇÁ¸µ ij½Ã È°¿ë 322
11.3 Jcache È°¿ë 328
11.3.1 Jcache ±¸Á¶ ¹× ¼³Á¤ 329
11.3.2 Jcache °´Ã¼ »ý¼º ¹× ½ÇÇà 330
11.4 Ehcache È°¿ë 332
11.4.1 Ehcache ¼³Á¤ 332
11.4.2 Ehcache »ç¿ë 333
11.4.3 Ä¿½ºÅÒ Å° »ý¼º ¹× Àû¿ë 335
CHAPTER 12 ȸ¿ø °ü¸® ¡¤ 341
12.1 ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ 343
12.1.1 ÀÎÁõ°ú Àΰ¡ 343
12.1.2 ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ ¼³Á¤ 345
12.2 ÆäÀÌÁö ±¸¼º 348
12.2.1 ÀÇÁ¸¼º ¼³Á¤ 348
12.2.2 ŸÀÓ¸®ÇÁ ·¹À̾ƿô ±¸¼º 349
12.3 ȸ¿ø°¡ÀÔ 355
12.3.1 Á¢±Ù °æ·Î ¼³Á¤ 355
12.3.2 »ç¿ëÀÚ Á¤º¸¿Í ȸ¿ø°¡ÀÔ ÆäÀÌÁö °³¹ß 356
12.4 ·Î±×ÀÎ 366
12.4.1 ȸ¿øÁ¤º¸ Á¶È¸ 366
12.4.2 Remember Me 368
APPENDIX A ÀÎÅÚ¸®Á¦À̸¦ ÀÌ¿ëÇÑ ¿¹Á¦ ÇÁ·ÎÁ§Æ® ½ÇÇà ¹æ¹ý ¡¤ 375
A.1 °³¹ß µµ±¸ È°¿ë ¹æ¹ý 377
A.1.1 ÀÎÅÚ¸®Á¦ÀÌ ¼³Ä¡ 377
A.1.2 ±âº» ÇÁ·ÎÁ§Æ® »ý¼º 378
A.2 Lombok ¹× Annotation processing ¼³Á¤ 382
ã¾Æº¸±â 386