{"id":375,"date":"2017-01-25T21:40:35","date_gmt":"2017-01-25T12:40:35","guid":{"rendered":"http:\/\/www.mukgee.com\/?p=375"},"modified":"2020-12-27T01:24:31","modified_gmt":"2020-12-26T16:24:31","slug":"javaaop","status":"publish","type":"post","link":"http:\/\/mukgee.com\/?p=375","title":{"rendered":"[Java]AOP"},"content":{"rendered":"<p><strong>A<\/strong>spect-<strong>O<\/strong>riented <strong>P<\/strong>rogramming<\/p>\n<p>\uac1d\uccb4 \uc9c0\ud5a5 \ud504\ub85c\uadf8\ub798\ubc0d(OOP)\ub85c \uac1c\ubc1c \ud558\ub2e4\ubcf4\ub2c8 \ub2e8\uc810\uc774 \ubc1c\uacac\ub418\uc5c8\ub2e4. \ubd84\uc0b0\ub41c \uc911\ubcf5 \uc18c\uc2a4 , \uc18c\uc2a4\uac04 \uc758\uc874\uc131 \uc99d\uac00 \ub4f1\ub4f1.<\/p>\n<p>\uc774\ub7f0 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \ub4f1\uc7a5\ud55c\uac83\uc774 AOP.<\/p>\n<p>&#8220;Aspect&#8221; \ub780 \ub85c\uae45 , \ubcf4\uc548, \ud2b8\ub80c\uc81d\uc158 \uac19\uc740 \ube44\uc9c0\ub2c8\uc2a4 \ub85c\uc9c1 \uc0ac\uc774\uc5d0 \uacf5\ud1b5\uc73c\ub85c \uc874\uc7ac\ud558\ub294 &#8220;\uad00\uc2ec\uc0ac&#8221;\ub4e4\uc774\ub2e4. \u00a0\uc774\ub7f0 \ubd80\ubd84\ub4e4\uc774 \uac1d\uccb4\uc9c0\ud5a5\ud504\ub85c\uadf8\ub798\ubc0d\uc5d0\uc11c\ub294 \uc804\uccb4 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc911\uad6c\ub09c\ubc29\uc73c\ub85c \ub4f1\uc7a5(\ud6a1\ub2e8 \uad00\uc2ec\uc0ac)\ud574\uc11c \uc815\ub9ac\uac00 \uc548\ub418\ub2c8 \uc774\ub7f0 \ubd80\ubd84\uc744 \ub530\ub85c \ub54c\uc11c \uac1c\ubc1c\ud558\uc790 \ub77c\ub294 \uac83\uc774\ub2e4.<\/p>\n<p><strong>\uacb0\uad6d \uac1d\uccb4\uc9c0\ud5a5 \ud504\ub85c\uadf8\ub798\ubc0d\uc744 \uc911\uc2ec\uc73c\ub85c \uac70\uae30\uc11c \ubc1c\uacac\ub41c \ubb38\uc81c\ub97c \uad00\uc2ec\uc0ac \ubd84\ub9ac\ub97c \ud1b5\ud574 \ud574\uacb0\ud558\uc790 \ub77c\ub294 \uac83\uc774 AOP<\/strong><\/p>\n<p>AOP\uc758 Aspect\ub97c \uad6c\ud604\ud558\uae30 \uc704\ud574\uc11c\ub294\u00a0Advice(\ubb34\uc5c7\uc744 \ud574\uc57c\ud558\ub294\uac00)\u00a0point cut(\uc5b4\ub514\uc11c \ud574\uc57c\ud558\ub294\uac00)\ub97c \uc815\uc758\ud574\uc57c\ud55c\ub2e4. \uc815\uc758\ub41c \uac83\uc744 weaving(point cut \uc9c0\uc810\uc5d0 Advice\ub97c \uc0bd\uc785)\ud55c\ub2e4.<\/p>\n<p>\uc77c\ub828\uc758 \uc791\uc5c5\uc744 \ud1b5\ud574 \uacf5\ud1b5\uc758 \uad00\uc2ec\uc0ac\ub97c \ubd84\ub9ac\ud558\uace0 \uc774\ub85c \uc911\ubcf5 \ucf54\ub4dc\ub97c \uc81c\uac70\ud558\uc5ec \uc720\uc9c0\ubcf4\uc218\uc5d0 \ud070 \uc774\uc810\uc744 \uac00\uc9c8 \uc218 \uc788\uac8c \ub41c\ub2e4.<\/p>\n<p>\uae00\ub85c\ub9cc \uc4f0\uba74 \ubb34\uc2a8\ub9d0\uc778\uc9c0 \uc798 \ubaa8\ub974\ub2c8, Spring\uc5d0\uc11c \uad6c\ud604\ub41c AOP\uc758 \uc2e4\uc804 \uc608\uc81c\ub97c \ud1b5\ud574 \uc774\ud574\ud574\ubcf4\uc790.<\/p>\n<p>Spring\uc5d0\uc11c AOP\ub97c \uad6c\ud604\ud558\uae30\uc704\ud55c \ubc29\ubc95\uc740 \uc5ec\ub7ec\uac00\uc9c0\uc778\ub370 \uc5b4\ub178\ud14c\uc774\uc158(AspectJ)\ub97c \uc774\uc6a9\ud55c \ubc29\ubc95\uc744 \uc0ac\uc6a9\ud574\ubcf4\uc790<\/p>\n<pre class=\"lang:java decode:true\">\/\/Import \ub4f1 \ud544\uc694\uc5c6\ub294 \ubd80\ubd84 \ubaa8\ub450 \uc0dd\ub7b5\n\n@Aspect \/\/\uc774 \ud074\ub798\uc2a4\uac00 Aspect \ud074\ub798\uc2a4\uc784\uc744 \uc120\uc5b8\npublic class LoggingAspect {\n\n    @Before(\"execution public * package.name.println*(..)\" \/\/\ud574\ub2f9 \ud328\ud0a4\uc9c0\ub0b4\uc758 println \uba54\uc18c\ub4dc \uc2e4\ud589\uc804(pointCut)\n    public void printBefore(JoinPoint joinPoint){ \/\/Joinpoint \ub294 pointcut\uc758 \ub300\uc0c1\uc774\ub418\ub294 \uba54\uc18c\ub4dc\ub4e4\uc758 \uc9d1\ud569\n        System.out.println(\"This is Advice\"); \/\/\uc2e4\uc81c Advice\ub294 @Before \uc5b4\ub178\ud14c\uc774\uc158\uc744 \ud3ec\ud568\ud55c printBefore\uc804\uccb4 \uba54\uc18c\ub4dc\n    }\n\n}\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Interface\ub85c \uc815\uc758\ub418\uace0 Spring Bean\uc73c\ub85c \ub4f1\ub85d\ub41c \uac1d\uccb4\ub9cc\uc774 Aspect\uac00 \uc2e4\ud589\ub418\ub294 \ub300\uc0c1\uc774\ub41c\ub2e4.<\/p>\n<p>\ud574\ub2f9 \ubb38\ubc95(@Before , @After \ub4f1)\uc5d0 \ub300\ud574\uc11c\ub294 AspectJ \ubb38\ubc95\uc744 \ucc3e\uc544 \uc0ac\uc6a9\ud558\uba74 \ub420\uac83 \uac19\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aspect-Oriented Programming \uac1d\uccb4 \uc9c0\ud5a5 \ud504\ub85c\uadf8\ub798\ubc0d(OOP)\ub85c \uac1c\ubc1c \ud558\ub2e4\ubcf4\ub2c8 \ub2e8\uc810\uc774 \ubc1c\uacac\ub418\uc5c8\ub2e4. \ubd84\uc0b0\ub41c \uc911\ubcf5 \uc18c\uc2a4 , \uc18c\uc2a4\uac04 \uc758\uc874\uc131 \uc99d\uac00 \ub4f1\ub4f1. \uc774\ub7f0 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \ub4f1\uc7a5\ud55c\uac83\uc774 AOP. &#8220;Aspect&#8221; \ub780&hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":""},"categories":[3],"tags":[5,19],"aioseo_notices":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/mukgee.com\/index.php?rest_route=\/wp\/v2\/posts\/375"}],"collection":[{"href":"http:\/\/mukgee.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/mukgee.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/mukgee.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/mukgee.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=375"}],"version-history":[{"count":1,"href":"http:\/\/mukgee.com\/index.php?rest_route=\/wp\/v2\/posts\/375\/revisions"}],"predecessor-version":[{"id":627,"href":"http:\/\/mukgee.com\/index.php?rest_route=\/wp\/v2\/posts\/375\/revisions\/627"}],"wp:attachment":[{"href":"http:\/\/mukgee.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=375"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/mukgee.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=375"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/mukgee.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}