{"id":18541,"date":"2024-03-15T17:10:42","date_gmt":"2024-03-15T17:10:42","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/"},"modified":"2024-03-21T13:33:14","modified_gmt":"2024-03-21T13:33:14","slug":"what-is-the-usage-of-pointcut-in-spring","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/","title":{"rendered":"What is the usage of @pointcut in Spring?"},"content":{"rendered":"<p>\u5728Spring\u4e2d\uff0c@pointcut\u6ce8\u89e3\u7528\u4e8e\u5b9a\u4e49\u4e00\u4e2a\u5207\u5165\u70b9\uff08pointcut\uff09\u3002\u5207\u5165\u70b9\u662f\u5728\u7a0b\u5e8f\u4e2d\u5b9a\u4e49\u7684\u4e00\u4e2a\u6761\u4ef6\u8868\u8fbe\u5f0f\uff0c\u7528\u4e8e\u786e\u5b9a\u54ea\u4e9b\u65b9\u6cd5\u6216\u7c7b\u5e94\u8be5\u88ab\u7ec7\u5165\uff08intercept\uff09\u5230\u6a2a\u5207\u903b\u8f91\uff08cross-cutting concerns\uff09\u4e2d\u3002<\/p>\n<p>The @pointcut annotation is usually used together with the @Aspect annotation. The @Aspect annotation identifies a class as an aspect, while the @pointcut annotation is used to define the pointcut. An aspect is a modular encapsulation of cross-cutting concerns, which can include one or more advices and pointcut definitions.<\/p>\n<p>When using the @pointcut annotation, AspectJ pointcut expressions can be utilized to define the specific points where aspects will be applied. These expressions allow for the specification of various conditions such as method visibility, return type, method name, parameter types, and number of parameters, in order to match the desired methods for weaving. For example:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-meta\">@Aspect<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">LoggingAspect<\/span> {\r\n\r\n    <span class=\"hljs-meta\">@Pointcut(\"execution(* com.example.service.*.*(..))\")<\/span>\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">serviceMethods<\/span><span class=\"hljs-params\">()<\/span> {}\r\n    \r\n    <span class=\"hljs-meta\">@Before(\"serviceMethods()\")<\/span>\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">beforeServiceMethods<\/span><span class=\"hljs-params\">(JoinPoint joinPoint)<\/span> {\r\n        <span class=\"hljs-comment\">\/\/ \u5728\u5339\u914d\u7684\u65b9\u6cd5\u6267\u884c\u4e4b\u524d\u6267\u884c\u7684\u901a\u77e5\u903b\u8f91<\/span>\r\n    }\r\n    \r\n    <span class=\"hljs-comment\">\/\/ \u5176\u4ed6\u901a\u77e5\u65b9\u6cd5...<\/span>\r\n}\r\n<\/code><\/pre>\n<p>In the above example, the @Pointcut annotation defines a pointcut named serviceMethods, which uses an AspectJ pointcut expression to specify all methods of all classes in the com.example.service package. Then, the beforeServiceMethods method, identified by the @Before annotation, uses the serviceMethods pointcut to specify the advice logic that will be executed before the matched methods.<\/p>\n<p>By using the @Pointcut annotation, we are able to separate the definition of the join points from the definition of the advice, making the code more modular and maintainable. Additionally, it is possible to define multiple join points within one aspect and share these definitions among multiple advices.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5728Spring\u4e2d\uff0c@pointcut\u6ce8\u89e3\u7528\u4e8e\u5b9a\u4e49\u4e00\u4e2a\u5207\u5165\u70b9\uff08pointcut\uff09\u3002\u5207\u5165\u70b9\u662f\u5728\u7a0b\u5e8f\u4e2d\u5b9a\u4e49\u7684\u4e00\u4e2a\u6761\u4ef6\u8868\u8fbe\u5f0f\uff0c\u7528\u4e8e\u786e\u5b9a\u54ea\u4e9b\u65b9\u6cd5\u6216\u7c7b\u5e94\u8be5\u88ab\u7ec7\u5165\uff08intercept\uff09\u5230\u6a2a\u5207\u903b\u8f91\uff08cross-cutting concerns\uff09\u4e2d\u3002 The @pointcut annotation is usually used together with the @Aspect annotation. The @Aspect annotation identifies a class as an aspect, while the @pointcut annotation is used to define the pointcut. An aspect is a modular encapsulation of cross-cutting concerns, which can include one or more advices and pointcut definitions. When using the @pointcut [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-18541","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What is the usage of @pointcut in Spring? - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is the usage of @pointcut in Spring?\" \/>\n<meta property=\"og:description\" content=\"\u5728Spring\u4e2d\uff0c@pointcut\u6ce8\u89e3\u7528\u4e8e\u5b9a\u4e49\u4e00\u4e2a\u5207\u5165\u70b9\uff08pointcut\uff09\u3002\u5207\u5165\u70b9\u662f\u5728\u7a0b\u5e8f\u4e2d\u5b9a\u4e49\u7684\u4e00\u4e2a\u6761\u4ef6\u8868\u8fbe\u5f0f\uff0c\u7528\u4e8e\u786e\u5b9a\u54ea\u4e9b\u65b9\u6cd5\u6216\u7c7b\u5e94\u8be5\u88ab\u7ec7\u5165\uff08intercept\uff09\u5230\u6a2a\u5207\u903b\u8f91\uff08cross-cutting concerns\uff09\u4e2d\u3002 The @pointcut annotation is usually used together with the @Aspect annotation. The @Aspect annotation identifies a class as an aspect, while the @pointcut annotation is used to define the pointcut. An aspect is a modular encapsulation of cross-cutting concerns, which can include one or more advices and pointcut definitions. When using the @pointcut [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T17:10:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-21T13:33:14+00:00\" \/>\n<meta name=\"author\" content=\"Liam\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Liam\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/\"},\"author\":{\"name\":\"Liam\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671\"},\"headline\":\"What is the usage of @pointcut in Spring?\",\"datePublished\":\"2024-03-15T17:10:42+00:00\",\"dateModified\":\"2024-03-21T13:33:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/\"},\"wordCount\":223,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/\",\"name\":\"What is the usage of @pointcut in Spring? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T17:10:42+00:00\",\"dateModified\":\"2024-03-21T13:33:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What is the usage of @pointcut in Spring?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671\",\"name\":\"Liam\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g\",\"caption\":\"Liam\"},\"sameAs\":[\"http:\/\/Wilson\"],\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/liamwilson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"What is the usage of @pointcut in Spring? - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/","og_locale":"en_US","og_type":"article","og_title":"What is the usage of @pointcut in Spring?","og_description":"\u5728Spring\u4e2d\uff0c@pointcut\u6ce8\u89e3\u7528\u4e8e\u5b9a\u4e49\u4e00\u4e2a\u5207\u5165\u70b9\uff08pointcut\uff09\u3002\u5207\u5165\u70b9\u662f\u5728\u7a0b\u5e8f\u4e2d\u5b9a\u4e49\u7684\u4e00\u4e2a\u6761\u4ef6\u8868\u8fbe\u5f0f\uff0c\u7528\u4e8e\u786e\u5b9a\u54ea\u4e9b\u65b9\u6cd5\u6216\u7c7b\u5e94\u8be5\u88ab\u7ec7\u5165\uff08intercept\uff09\u5230\u6a2a\u5207\u903b\u8f91\uff08cross-cutting concerns\uff09\u4e2d\u3002 The @pointcut annotation is usually used together with the @Aspect annotation. The @Aspect annotation identifies a class as an aspect, while the @pointcut annotation is used to define the pointcut. An aspect is a modular encapsulation of cross-cutting concerns, which can include one or more advices and pointcut definitions. When using the @pointcut [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T17:10:42+00:00","article_modified_time":"2024-03-21T13:33:14+00:00","author":"Liam","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Liam","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/"},"author":{"name":"Liam","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671"},"headline":"What is the usage of @pointcut in Spring?","datePublished":"2024-03-15T17:10:42+00:00","dateModified":"2024-03-21T13:33:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/"},"wordCount":223,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/","url":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/","name":"What is the usage of @pointcut in Spring? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T17:10:42+00:00","dateModified":"2024-03-21T13:33:14+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-pointcut-in-spring\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"What is the usage of @pointcut in Spring?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671","name":"Liam","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g","caption":"Liam"},"sameAs":["http:\/\/Wilson"],"url":"https:\/\/www.silicloud.com\/blog\/author\/liamwilson\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/18541","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=18541"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/18541\/revisions"}],"predecessor-version":[{"id":52229,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/18541\/revisions\/52229"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=18541"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=18541"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=18541"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}