\uc2a4\ud504\ub9c1 \ubd80\ud2b8\ub294 \ub300\uaddc\ubaa8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ubc1c\uc0dd\ud560 \uc218 \uc788\ub294 \uc131\ub2a5 \uc774\uc288\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \ube44\ub3d9\uae30 \ucc98\ub9ac\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4. \uc2a4\ud504\ub9c1 \ubd80\ud2b8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ube44\ub3d9\uae30 \ucc98\ub9ac\ub97c \uad6c\ud604\ud560 \ub54c\ub294 \ud2b9\uc815 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc27d\uac8c \uad6c\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae00\uc5d0\uc11c\ub294 \uc2a4\ud504\ub9c1 \ubd80\ud2b8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ube44\ub3d9\uae30 \ucc98\ub9ac\ub97c \uad6c\ud604\ud558\ub294 \ubc29\ubc95\uacfc \uc774\uc810\uc5d0 \ub300\ud574 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n
\ube44\ub3d9\uae30 \ucc98\ub9ac\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \ucc98\ub9ac\ud574\uc57c \ud560 \uc791\uc5c5\uc744 \uc5ec\ub7ec \uac1c\uc758 \uc791\uc740 \uc791\uc5c5\uc73c\ub85c \ubd84\ud560\ud558\uace0, \uac01 \uc791\uc5c5\uc744 \ubcc4\ub3c4\uc758 \uc2a4\ub808\ub4dc\uc5d0\uc11c \ub3d9\uc2dc\uc5d0 \uc2e4\ud589\ud568\uc73c\ub85c\uc368 \uc131\ub2a5\uc744 \ud5a5\uc0c1\uc2dc\ud0a4\ub294 \uae30\uc220\uc785\ub2c8\ub2e4. \uc2a4\ud504\ub9c1 \ubd80\ud2b8\ub294 \ube44\ub3d9\uae30 \ucc98\ub9ac\ub97c \uc704\ud574 \ub2e4\uc74c\uacfc \uac19\uc740 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n
\uc2a4\ud504\ub9c1 \ubd80\ud2b8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ube44\ub3d9\uae30 \ucc98\ub9ac\ub97c \uad6c\ud604\ud558\ub294 \ubc29\ubc95\uc740 \uac04\ub2e8\ud569\ub2c8\ub2e4. \uba3c\uc800, @EnableAsync \uc5b4\ub178\ud14c\uc774\uc158\uc744 \uc0ac\uc6a9\ud558\uc5ec \ube44\ub3d9\uae30 \ucc98\ub9ac\ub97c \ud65c\uc131\ud654\ud569\ub2c8\ub2e4. \uadf8\ub9ac\uace0 @Async \uc5b4\ub178\ud14c\uc774\uc158\uc744 \uba54\uc18c\ub4dc\uc5d0 \ucd94\uac00\ud558\uc5ec \ud574\ub2f9 \uba54\uc18c\ub4dc\ub97c \ube44\ub3d9\uae30\uc801\uc73c\ub85c \uc2e4\ud589\ud569\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \uc608\uc81c \ucf54\ub4dc\uc785\ub2c8\ub2e4.<\/p>\n
@EnableAsync\n@SpringBootApplication\npublic class MyApplication {\n\n public static void main(String[] args) {\n SpringApplication.run(MyApplication.class, args);\n }\n\n @Async\n public void doSomethingAsync() {\n \/\/ \ube44\ub3d9\uae30\uc801\uc73c\ub85c \uc2e4\ud589\ub418\ub294 \uc791\uc5c5\n }\n}<\/code><\/pre>\n\uc704 \uc608\uc81c\uc5d0\uc11c\ub294 @EnableAsync \uc5b4\ub178\ud14c\uc774\uc158\uc744 \uc0ac\uc6a9\ud558\uc5ec \ube44\ub3d9\uae30 \ucc98\ub9ac\ub97c \ud65c\uc131\ud654\ud558\uace0, @Async \uc5b4\ub178\ud14c\uc774\uc158\uc744 doSomethingAsync() \uba54\uc18c\ub4dc\uc5d0 \ucd94\uac00\ud558\uc5ec \ud574\ub2f9 \uba54\uc18c\ub4dc\ub97c \ube44\ub3d9\uae30\uc801\uc73c\ub85c \uc2e4\ud589\ud569\ub2c8\ub2e4.<\/p>\n
\uc2a4\ud504\ub9c1 \ubd80\ud2b8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ube44\ub3d9\uae30 \ucc98\ub9ac\ub97c \uad6c\ud604\ud560 \ub54c \uc8fc\uc758\ud574\uc57c \ud560 \uc810\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uba3c\uc800, \ube44\ub3d9\uae30\uc801\uc73c\ub85c \uc2e4\ud589\ub418\ub294 \uc791\uc5c5\uc774 I\/O \uc791\uc5c5\uc774\ub77c\uba74, I\/O \uc791\uc5c5\uc744 \uc218\ud589\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 \uc2a4\ub808\ub4dc \ud480\uc744 \ubcc4\ub3c4\ub85c \uad6c\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\ub97c \uc704\ud574 \uc2a4\ud504\ub9c1 \ubd80\ud2b8\ub294 TaskExecutor \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. TaskExecutor \uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud558\uc5ec \uc6d0\ud558\ub294 \uc2a4\ub808\ub4dc \ud480\uc744 \uad6c\uc131\ud558\uace0, @Async \uc5b4\ub178\ud14c\uc774\uc158\uc758 executor \uc18d\uc131\uc5d0 \ud574\ub2f9 TaskExecutor \ube48\uc744 \uc9c0\uc815\ud558\uba74 \ub429\ub2c8\ub2e4.<\/p>\n
\ub610\ud55c, \ube44\ub3d9\uae30\uc801\uc73c\ub85c \uc2e4\ud589\ub418\ub294 \uc791\uc5c5\uc5d0\uc11c \ubc1c\uc0dd\ud558\ub294 \uc608\uc678\ub97c \ucc98\ub9ac\ud558\ub294 \ubc29\ubc95\ub3c4 \uc911\uc694\ud569\ub2c8\ub2e4. \uc2a4\ud504\ub9c1 \ubd80\ud2b8\ub294 @Async \uc5b4\ub178\ud14c\uc774\uc158\uc5d0 exceptionally \uc18d\uc131\uc744 \uc9c0\uc815\ud558\uc5ec \ube44\ub3d9\uae30\uc801\uc73c\ub85c \uc2e4\ud589\ub418\ub294 \uc791\uc5c5\uc5d0\uc11c \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc744 \ub54c \ucc98\ub9ac\ud560 \uc218 \uc788\ub294 \uc608\uc678 \ud578\ub4e4\ub7ec\ub97c \ub4f1\ub85d\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
@Async\npublic void doSomethingAsync() throws InterruptedException {\n \/\/ \ube44\ub3d9\uae30\uc801\uc73c\ub85c \uc2e4\ud589\ub418\ub294 \uc791\uc5c5\n if (somethingGoesWrong) {\n throw new RuntimeException(\"Something went wrong!\");\n }\n}\n\n@Async(exceptionally = \"handleException\")\npublic void doSomethingAsync() throws InterruptedException {\n \/\/ \ube44\ub3d9\uae30\uc801\uc73c\ub85c \uc2e4\ud589\ub418\ub294 \uc791\uc5c5\n if (somethingGoesWrong) {\n throw new RuntimeException(\"Something went wrong!\");\n }\n}\n\npublic void handleException(Throwable ex) {\n \/\/ \uc608\uc678 \ucc98\ub9ac \ub85c\uc9c1\n}<\/code><\/pre>\n\uc704 \uc608\uc81c\uc5d0\uc11c\ub294 doSomethingAsync() \uba54\uc18c\ub4dc\uc5d0\uc11c \uc608\uc678\uac00 \ubc1c\uc0dd\ud558\uba74 handleException() \uba54\uc18c\ub4dc\uc5d0\uc11c \uc608\uc678\ub97c \ucc98\ub9ac\ud569\ub2c8\ub2e4.<\/p>\n
\uacb0\ub860<\/h2>\n
\uc774\ubc88 \uae00\uc5d0\uc11c\ub294 \uc2a4\ud504\ub9c1 \ubd80\ud2b8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ube44\ub3d9\uae30 \ucc98\ub9ac\ub97c \uad6c\ud604\ud558\ub294 \ubc29\ubc95\uacfc \uc774\uc810\uc5d0 \ub300\ud574 \uc0b4\ud3b4\ubcf4\uc558\uc2b5\ub2c8\ub2e4. \uc2a4\ud504\ub9c1 \ubd80\ud2b8\ub294 @Async \uc5b4\ub178\ud14c\uc774\uc158\uacfc CompletableFuture \ud074\ub798\uc2a4\ub97c \uc81c\uacf5\ud558\uc5ec \ube44\ub3d9\uae30 \ucc98\ub9ac\ub97c \uc27d\uac8c \uad6c\ud604\ud560 \uc218 \uc788\ub3c4\ub85d \uc9c0\uc6d0\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc, \ube44\ub3d9\uae30 \ucc98\ub9ac\ub97c \uad6c\ud604\ud560 \ub54c\ub294 \uc2a4\ub808\ub4dc \ud480\uc744 \uad6c\uc131\ud558\uace0, \uc608\uc678 \ucc98\ub9ac \ud578\ub4e4\ub7ec\ub97c \ub4f1\ub85d\ud558\ub294 \ub4f1\uc758 \uc8fc\uc758\uc0ac\ud56d\uc774 \uc788\uc73c\ubbc0\ub85c, \uc774\ub97c \uc219\uc9c0\ud558\uace0 \uad6c\ud604\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"
Spring Boot \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ube44\ub3d9\uae30 \ucc98\ub9ac \uad6c\ud604\ud558\uae30<\/p>\n","protected":false},"author":1,"featured_media":12882,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1957],"tags":[2089,5898,2059,2105,2112,2188,2156,5932],"class_list":["post-35142","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development","tag-applications","tag-backend","tag-implementing","tag-java","tag-processing","tag-public","tag-spring","tag-spring-boot"],"acf":[],"_links":{"self":[{"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/posts\/35142","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/comments?post=35142"}],"version-history":[{"count":1,"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/posts\/35142\/revisions"}],"predecessor-version":[{"id":35200,"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/posts\/35142\/revisions\/35200"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/media\/12882"}],"wp:attachment":[{"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/media?parent=35142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/categories?post=35142"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/tags?post=35142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}