Ŭ ȯ濡 ø̼ ϴ ȿ Ŭ ߴϸ鼭 ø̼ Ŭ忡 ǰ ִ. å ¶ ý ϸ Ŭ ȯ濡 ø̼ ϴ Ѵ. Ŭ Ƽ Ʈϰ, Ŀ ̳ȭϸ, Ƽ ۺ Ŭ忡 ϴ . Ŭ Ƽ ȯ Ģ غ Ͽ ʿ нϰ, ˷ Ŭ Ƽ ϵ ´. ư , , Ȯ强 ó ϰ ɽ ǽغ. Ŭ ȯ Žϴ Ϻ Թ ̴.
ְ Ŭ Ƽ ø̼ ϴ Ʈ Ͼ ŰƮ. ũ Systematic Ʈ ϰ , ȿ ΰ Ŭ Ƽ ȯ ÷ ø̼ ȭ ۾ ؿԴ. ֿ ɻ оߴ ڹ, Ʈ, Ƽ, ̳Ƽ Ŭ Ƽ ̴. ϸ Բ ϴ ȭ , , Ͻ ġ ִٰ ϰ , Ŭ ¼ҽ Ʈ ϰ Ŀ´Ƽ ͵ Ѵ.
ű Ӹ xvŸ ı xviiiõ ( ) xxӸ xxii xxiv å Ͽ xxviǥ Ͽ xxxiiPART I Ŭ Ƽ CHAPTER 1 Ŭ Ƽ Ұ 31.1 Ŭ Ƽ ΰ? 5__1.1.1 Ŭ Ƽ꿡 P 51.2 Ŭ Ŭ ǻ 6__1.2.1 Ʈó 9 / 1.2.2 ̳ 9 / 1.2.3 ÷ 10 / 1.2.4 Լ 10 / 1.2.5 Ʈ 111.3 Ŭ Ƽ ø̼ Ư 11__1.3.1 Ȯ强 12 / 1.3.2 13 / 1.3.3 15 / 1.3.4 ɼ 16 / 1.3.5 ̼ 171.4 Ŭ Ƽ긦 ϴ ȭ 18__1.4.1 ڵȭ 19 / 1.4.2 21 / 1.4.3 ɽ 221.5 Ŭ尡 ּ ΰ? 24__1.5.1 ӵ 25 / 1.5.2 26 / 1.5.3 Ȯ强 27 / 1.5.4 271.6 Ŭ Ƽ 28__1.6.1 ̳ 29 / 1.6.2 ɽƮ̼ 32 / 1.6.3 331.7 Ŭ Ƽ ø̼ Űó 35__1.7.1 ũμ Űó 36 / 1.7.2 Ŭ Ƽ ø̼ Űó 38 40CHAPTER 2 Ŭ Ƽ 422.1 Ŭ Ƽ Ģ: 12ҿ Ȯ 43__2.1.1 ϳ ڵ庣̽, ϳ ø̼ 44 / 2.1.2 API 켱 44 / 2.1.3 44 / 2.1.4 , , , 45 / 2.1.5 , ũ ڵ 45 / 2.1.6 α 46 / 2.1.7 ȸ 46 / 2.1.8 47 / 2.1.9 ȯ ϼ 47 / 2.1.10 μ 47 / 2.1.11 Ʈ ε 48 / 2.1.12 ¸ ʴ μ 48 / 2.1.13 ü 49 / 2.1.14 49 / 2.1.15 492.2 Ŭ Ƽ ø̼ 50__2.2.1 50 / 2.2.2 Ʈ ø̼ 51 2.3 Ŀ ø̼ ̳ȭ 62__2.3.1 Ŀ Ұ: ̹ ̳ 63 / 2.3.2 ̳ʸ ø̼ 662.4 Ƽ ̳ 68__2.4.1 Ƽ Ұ: , ĵ, 69 / 2.4.2 Ƽ ø̼ 712.5 ϼ: Ŭ Ƽ ø̼ 75__2.5.1 ý 䱸 75 / 2.5.2 Ʈ Ǵ ϰ 78 82PART II Ŭ Ƽ CHAPTER 3 Ŭ Ƽ 873.1 Ŭ Ƽ Ʈ ƮƮ 88__3.1.1 ϳ ڵ庣̽, ϳ ø̼ 88 / 3.1.2 ̺ 903.2 Ӻ ۾ 92__3.2.1 JAR Ӻ 93 / 3.2.2 û 95 / 3.2.3 Ĺ 973.3 MVC ̿ RESTful ø̼ 100__3.3.1 REST API , Ͻ ״ 100 / 3.3.2 MVC ̿ REST API 106 / 3.3.3 ȿ ˻ ó 109 / 3.3.4 ̷ 䱸 ȭϴ API 1143.4 RESTful ø̼ Ʈ 115__3.4.1 JUnit 5 ̿ Ʈ 117 / 3.4.2 @SpringBootTest Ʈ 119 / 3.4.3 @WebMvcTest REST Ʈѷ Ʈ 122 / 3.4.4 @JsonTest JSON ȭ Ʈ 1243.5 : Ʈ 126__3.5.1 Ŀ ܰ 127 / 3.5.2 ̿ Ŀ ܰ 129 133CHAPTER 4 ܺȭ 136M4.1 : Ӽ 139__4.1.1 Ӽ: Ű- 140 / 4.1.2 : ÷ 1464.2 ܺȭ : ϳ , 150__4.2.1 Ŀǵ μ ø̼ 152 / 4.2.2 JVM ý Ӽ ø̼ 152 / 4.2.3 ȯ ø̼ 1534.3 Ŭ DZ ߾ӽ ϱ 155__4.3.1 158 / 4.3.2 160 / 4.3.3 164 / 4.3.4 REST API 1664.4 Ŭ DZ Ŭ̾Ʈ 168__4.4.1 Ŭ̾Ʈ 168 / 4.4.2 Լ Ŭ̾Ʈ 171 / 4.4.3 Ÿ ΰħ 173 176CHAPTER 5 Ŭ忡 1785.1 Ŭ Ƽ ý ͺ̽ 179__5.1.1 Ŭ忡 180 / 5.1.2 PostgreSQL ̳ʷ 1835.2 Ϳ Ӽ JDBC 185__5.2.1 JDBC ͺ̽ 187 / 5.2.1 Ӽ ƼƼ 190 / 5.2.3 JDBC Ȱȭ 195 / 5.2.4 1985.3 Ʈ̳ʷ Ӽ Ʈϱ 202__5.3.1 PostgreSQL Ʈ̳ 203 / 5.3.2 @DataJdbcTest Ʈ̳ʸ Ӽ Ʈ 205 / 5.3.3 @SpringBootTest Ʈ̳ʸ ̿ Ʈ 2065.4 ö̸̿ δ ȯ濡 ͺ̽ 207__5.4.1 ö̿ : ͺ̽ 208 / 5.4.2 ö̸̿ ̿ ͺ̽ Ű ʱȭ 210 / 5.4.3 ö̸̿ ̿ ͺ̽ ȭ 211 213CHAPTER 6 Ʈ ̳ȭ 2156.1 Ŀ ̳ ̹ ۾ϱ 216__6.1.1 ̳ ̹ 217 / 6.1.2 Ŀ ̹ 218 / 6.1.3 ̳ ҷ ̹ 2226.2 Ʈ ø̼ ̳ ̹ Ű 226__6.2.1 Ʈ ̳ȭ غ 226 / 6.2.2 ĿϷ Ʈ ̳ȭ 229 / 6.2.3 δ ̳ ̹ 231 / 6.2.4 Ŭ Ƽ ̿ Ʈ ̳ȭ 2376.3 Ŀ Ʈ ̳ 242__6.3.1 Ŀ ̳ Ŭ 243 / 6.3.2 Ʈ ̳ 244 6.4 : Ű 247__6.4.1 Ŀ ܰ迡 ĺ 248 / 6.4.2 ̳ ̹ 249 254CHAPTER 7 Ʈ Ƽ 2567.1 Ŀ Ƽ ̵ 257__7.1.1 Ƽ Ŭ 259 / 7.1.2 ŬͿ 2617.2 Ʈ Ƽ 263__7.2.1 ̳ʿ ĵ 263 / 7.2.2 ĵ 264 / 7.2.3 Ʈ ø̼ ü 2657.3 ˻ л 271__7.3.1 ˻ л 271 / 7.3.2 Ŭ̾Ʈ ˻ л 272 / 7.3.3 ˻ л 274 / 7.3.4 Ƽ Ʈ ø̼ 2767.4 Ȯ强 ȸ 279__7.4.1 ȸ : 280 / 7.4.2 ȸ : 280 / 7.4.3 Ʈ ø̼ Ȯ 2837.5 ƿƮ Ƽ 286__7.5.1 ƿƮ 286 / 7.5.2 źƮ Ƽ ũε ðȭ 2897.6 : Ƽ Ŵ佺Ʈ ȿ ˻ 292__7.6.1 Ŀ ܰ迡 Ƽ Ŵ佺Ʈ 292 / 7.6.2 Ƽ Ŵ佺Ʈ ȿ ˻ ڵȭ 294 295PART III Ŭ Ƽ л ýCHAPTER 8 Ƽ : ° Ȯ强 2998.1 Ϳ Űó 301__8.1.1 û 忡 ̺Ʈ 302 / 8.1.2 Ʈ : ÷ Ƽ Ʈ 304 / 8.1.3 Ƽ 3068.2 ÷ R2DBC Ƽ 307__8.2.1 Ʈ Ƽ ø̼ ƮƮ 309 / 8.2.2 R2DBC Ƽ Ӽ 311 / 8.2.3 Ƽ Ʈ ̿ Ͻ 318 / 8.2.4 ÷ REST API 3218.3 Ŭ̾Ʈ Ƽ Ŭ̾Ʈ 323__8.3.1 324 / 8.3.2 ȯ 326 / 8.3.3 Ŭ̾Ʈ REST Ŭ̾Ʈ 3288.4 Ƽ ø̼ 332__8.4.1 ŸӾƿ 332 / 8.4.2 õ 336 / 8.4.3 ó 3398.5 , , Ʈ̳ʸ ̿ Ƽ ø̼ Ʈ 341__8.5.1 REST Ŭ̾Ʈ Ʈ 341 / 8.5.2 @DataR2dbcTest Ʈ̳ʸ ̿ Ӽ Ʈ 344 / 8.5.3 @WebFluxTest ̿ REST Ʈѷ Ʈ 346 348CHAPTER 9 API Ʈ̿ Ŷ 극Ŀ 3509.1 Ŭ Ʈ 352__9.1.1 Ŭ Ʈ̸ ̿ ƮƮ 354 / 9.1.2 ο 356 / 9.1.3 û ó 3609.2 Ŭ Ŷ 극Ŀ Resilience4J Լ ϱ 362__9.2.1 Ŭ Ŷ 극Ŀ Ŷ 극Ŀ Ұ 364 / 9.2.2 Resilience4J Ŷ 극Ŀ 365 / 9.2.3 ÷ ̿ REST API 366 / 9.2.4 Ŷ 극Ŀ, õ ð 3679.3 Ŭ Ʈ̿ û 371__9.3.1 ̳ 372 / 9.3.2 373 / 9.3.3 û 3749.4 л 377__9.4.1 ó 3789.5 Ƽ α ܺ 382__9.5.1 α API α Ʈѷ 382 / 9.5.2 α ü 385 388CHAPTER 10 ̺Ʈ ߽ ø̼ǰ Լ 39010.1 ̺Ʈ ߽ Űó 392__10.1.1 ̺Ʈ ߽ 392 / 10.1.2 / 39310.2 Ŀ MQ 395__10.2.1 ¡ ý AMQP 396 / 10.2.2 / MQ 39710.3 Ŭ Լ Լ 399__10.3.1 Ŭ Լ Լ з 400 / 10.3.2 Լ ռ : REST, , Ʈ 406 / 10.3.3 @FunctionalSpringBootTest Ʈ 40810.4 Ŭ Ʈ ó 410__10.4.1 MQ 410 / 10.4.2 Լ ä ε 412 / 10.4.3 Ʈ δ Ʈ 419 / 10.4.4 п 42210.5 Ŭ Ʈ Һ 423__10.5.1 ̺Ʈ Һ 423 / 10.5.2 ̺Ʈ ڼ 427 433CHAPTER 11 : SPA 43511.1 43611.2 ŰŬ 441__11.2.1 443 / 11.2.2 44411.3 ID ĿƮ, JWT ŰŬ 445__11.3.1 ID ĿƮ 446 / 11.3.2 JWT ȯ 450 / 11.3.3 ŰŬϿ ø̼ 45211.4 ID ĿƮ 455__11.4.1 ߰ 456 / 11.4.2 Ȱ ŰŬ 457 / 11.4.3 458 / 11.4.4 ؽƮ ˻ 460 / 11.4.5 ŰŬϿ αƿ 46411.5 Ȱ SPA 468__11.5.1 ޱַ ø̼ 469 / 11.5.2 帧 471 / 11.5.3 Ʈ û 47411.6 ID ĿƮ Ʈ 477__11.6.1 OIDC Ʈ 477 / 11.6.2 CSRF Ʈ 479 482CHAPTER 12 : Ѱ 48412.1 Ŭ Ʈ̿ OAuth2 Ѱ 485__12.1.1 Ŭ Ʈ̿ ٸ ū 488 / 12.1.2 ū 49112.2 OAuth2 API ȣ() 497__12.2.1 Ʈ OAuth2 ҽ ȣ 497 / 12.2.2 JWT 501 / 12.2.3 Ʈ̳ʸ ̿ OAuth2 Ʈ 50412.3 Ȱ OAuth2 ̿ API ȣ() 511__12.3.1 Ʈ OAuth2 ҽ ȣ 511 / 12.3.2 Ʈ̳ʷ OAuth2 Ʈ 51412.4 ͷ ȣ 516__12.4.1 JDBC 517 / 12.4.2 Ϳ @WithMockUser Ʈ 520 / 12.4.3 R2DBC ȣ 522 / 12.4.4 @WithMockUser R2DBC ȣ Ʈ 526 528PART IV δǿ Ŭ ƼCHAPTER 13 ɼ 53313.1 Ʈ, Ű ÷Ʈ Ʈ α 534__13.1.1 Ʈ α 535 / 13.1.2 Ű, ÷Ʈ Ʈ, ij α ϱ 53813.2 Ʈ ߿Ϳ Ƽ κ 544__13.2.1 ߿ Ʈ ø̼ κ 545 / 13.2.2 Ʈ Ƽ κ 54813.3 Ʈ ߿, θ콺, ij Ʈ 553__13.3.1 Ʈ ߿ ũιͷ Ʈ 554 / 13.3.2 θ콺 ij Ʈ 557 / 13.3.3 Ƽ θ콺 Ʈ 56213.4 ڷƮ л 563__13.4.1 ij Ʈ̽ 566 / 13.4.2 ڷƮ Ʈ ϱ 56713.5 Ʈ ߿ ø̼ 572__13.5.1 Ʈ ö̿ ̱̼ 573 / 13.5.2 ø̼ 574 / 13.5.3 м 577 579CHAPTER 14 ũ 58114.1 Ƽ ø̼ ϱ 582__14.1.1 ťƼ 583 / 14.1.2 Ŭ Ÿ ΰħ 584 / 14.1.3 Ŭ DZ ũ 586 / 14.1.4 Ŭ DZ Ȱȭ 58714.2 Ƽ DZʰ ũ 588__14.2.1 DZ Ʈ 589 / 14.2.2 ũ ΰ ϰų ʱ 594 / 14.2.3 Ŭ Ƽ Ÿ 59714.3 Ŀ 600__14.3.1 Ŀ Ʈ ø̼ 601 / 14.3.2 Ŀ ȯ濡 Ƽ 606 / 14.3.3 ¡ 609 / 14.3.4 ȯ 610 / 14.3.5 DZ 612 / 14.3.6 ̹ ̸ 613 / 14.3.7 614 618CHAPTER 15 ް ɽ 62015.1 : ܰ 621__15.1.1 ĺ 621 / 15.1.2 ܰ 626 / 15.1.3 ܰ 62815.2 δ Ʈ 631__15.2.1 δ 632 / 15.2.2 Ʈ ̳ CPU 638 / 15.2.3 δ ȯ濡 Ʈ 64415.3 : δ ܰ 646__15.3.1 δ ܰ 647 / 15.3.2 δ ܰ 64715.4 ɽ 654__15.4.1 Ƹ CD ɽ 656 / 15.4.2 ϱ 660 662CHAPTER 16 , VM ̳Ƽ 66416.1 Ƽ VM Ƽ ̹ 665__16.1.1 VM Ƽ ̹ ϱ 666 / 16.1.2 Ƽ긦 VM Ʈ 667 / 16.1.3 Ʈ ø̼ Ƽ ̹ 67416.2 Ŭ Լ ø̼ 678__16.2.1 Ŭ Լ ø̼ 679 / 16.2.2 : 685 / 16.2.3 ø̼ Ŭ 68716.3 ̳Ƽ긦 ø̼ 688__16.3.1 ̳Ƽ ÷ 689 / 16.3.2 ̳Ƽ CLI ø̼ 690 / 16.3.3 ̳Ƽ Ŵ佺Ʈ ø̼ 692 696APPENDIX ηAPPENDIX A ȯ 701A.1 ڹ 701A.2 Ŀ 703A.3 Ƽ 705A.4 ٸ 707APPENDIX B п δ ȯ Ƽ 710B.1 пǿ Ƽ Ŭ 711B.2 пǿ PostgresQL ͺ̽ 715B.3 пǿ 717B.4 Ƽ ۷ MQ 719B.5 ︧ Ʈ ŰŬ 720B.6 UI 723B.7 Ŭ ҽ 723ãƺ 725