日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot AOP完全讲解一:基础概念

發布時間:2024/9/30 javascript 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot AOP完全讲解一:基础概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/80669022
本文出自【趙彥軍的博客】

Aop 切面編程

aop 全稱 Aspect Oriented Programming ,面向切面,AOP主要實現的目的是針對業務處理過程中的切面進行提取,它所面對的是處理過程中的某個步驟或階段,以獲得邏輯過程中各部分之間低耦合性的隔離效果。其與設計模式完成的任務差不多,是提供另一種角度來思考程序的結構,來彌補面向對象編程的不足。

搭建Aop

本來 spring 就自帶一套 aop 實現,我們直接使用此實現即可,本來使用aop還需要定義一些xml文件,但由于我們使用的是spring-boot框架,這一步就省略掉了。 也就是說,在spring-boot中,我們可以直接使用aop而不需要任何的 xml 配置,只需要添加相應的以來即可

compile('org.springframework.boot:spring-boot-starter-web','org.springframework.boot:spring-boot-starter-aop' )

Aop 常用術語

  • 切面(Aspect):

一個關注點的模塊化,這個關注點可能會橫切多個對象。事務管理是J2EE應用中一個關于橫切關注點的很好的例子。在Spring AOP中,切面可以使用基于模式或者基于@Aspect注解的方式來實現。

  • 連接點(Joinpoint):

在程序執行過程中某個特定的點,比如某方法調用的時候或者處理異常的時候。在Spring AOP中,一個連接點總是表示一個方法的執行。

  • 通知(Advice):

在切面的某個特定的連接點上執行的動作。其中包括了“around”、“before”和“after”等不同類型的通知(通知的類型將在后面部分進行討論)。許多AOP框架(包括Spring)都是以攔截器做通知模型,并維護一個以連接點為中心的攔截器鏈。

  • 切入點(Pointcut):

匹配連接點的斷言。通知和一個切入點表達式關聯,并在滿足這個切入點的連接點上運行(例如,當執行某個特定名稱的方法時)。切入點表達式如何和連接點匹配是AOP的核心:Spring缺省使用AspectJ切入點語法。

  • 引入(Introduction):

用來給一個類型聲明額外的方法或屬性(也被稱為連接類型聲明(inter-type declaration))。Spring允許引入新的接口(以及一個對應的實現)到任何被代理的對象。例如,你可以使用引入來使一個bean實現IsModified接口,以便簡化緩存機制。

  • 目標對象(Target Object):

被一個或者多個切面所通知的對象。也被稱做被通知(advised)對象。既然Spring AOP是通過運行時代理實現的,這個對象永遠是一個被代理(proxied)對象。

  • AOP代理(AOP Proxy):

AOP框架創建的對象,用來實現切面契約(例如通知方法執行等等)。在Spring中,AOP代理可以是JDK動態代理或者CGLIB代理。

  • 織入(Weaving):

把切面連接到其它的應用程序類型或者對象上,并創建一個被通知的對象。這些可以在編譯時(例如使用AspectJ編譯器),類加載時和運行時完成。Spring和其他純Java AOP框架一樣,在運行時完成織入。

切入點表達式

切入點表達式的格式:

execution([可見性] 返回類型 [聲明類型].方法名(參數) [異常])

其中【】中的為可選,其他的還支持通配符的使用:

  • *:匹配所有字符
  • ..:一般用于匹配多個包,多個參數
  • +:表示類及其子類

運算符有:&&、||、!

常用的表達式

  • 包名切面

對 com.app.controller 包中所有的類的所有方法切面

@Pointcut("execution(public * com.app.controller.*.*(..))")
  • 包名及子包切面

對 com.app.controller 及其子包中所有的類的所有方法切面

@Pointcut("execution(public * com.app.controller..*.*(..))")
  • 類名切面

只針對 StudentController 類切面

@Pointcut("execution(public * com.app.controller.StudentController.*(..))")

個人微信號:zhaoyanjun125 , 歡迎關注

總結

以上是生活随笔為你收集整理的SpringBoot AOP完全讲解一:基础概念的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。