小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

spring AOP與注解處理

 印度阿三17 2019-07-15

Spring IoC 的實現(xiàn)機制:

Spring 中的 IoC 的實現(xiàn)原理就是工廠模式加反射機制。

?

核心概念

連接點,切點,切面(類),織入(動態(tài)代理對象,約定流程),五種通知,原有目標對象方法以及參數(shù)。

要對哪些類的哪些方法進行增強.

通過注解標識通知類型。

?

spring AOP原理:把當前方法織入某個流程中。

當然@Transacation這只是AOP的一種約定編程,被它注解的代碼說明需要開啟事務運行,Spring幫你把insertUser方法織入類似上圖的流程中,數(shù)據(jù)庫連接的打開和關閉以及事務管理都由它給你默認實現(xiàn),也就是它可以將大量重復的流程通過約定的方式抽離出來,然后給與默認實現(xiàn)。例如這里的數(shù)據(jù)庫打開釋放,事務的處理和大量的try…catch…finally語句代碼塊。

這里沒有任何數(shù)據(jù)庫打開和關閉的代碼,也沒有事務回滾和提交的代碼,卻實現(xiàn)了數(shù)據(jù)庫資源的打開和關閉以及事務的回滾和提交。(開啟事務的回滾和提交)

數(shù)據(jù)庫資源的打開和關閉是由誰做的?

連接點(join point )

切點:一系列連接點,需要通過正則表達式進行匹配。

  • 通知(advice): 就是按照約定的流程下的方法,分為前置通知(before advice),后置通知(after advice),環(huán)繞通知(around advice),事后返回通知(afterReturning advice),異常通知(afterThrowing advice),它會根據(jù)約定織入流程中,需要弄明白它們在流程中的順序和運行的條件。(約定流程下的方法)

織入(weaving):它是一個通過動態(tài)代理技術,為原有服務對象生成代理對象,然后將與切點定義匹配的連接點攔截,并按照約定將各類通知織入約定流程的過程。

通過反射機制實現(xiàn)動態(tài)代理。

首先要確定需要攔截什么方法,讓它能織入約定的流程中。

首先需要確定連接點(什么類的什么方法)的問題。要對哪一個方法增強功能?

有了連接點,我們還需要一個切面,通過它可以描述AOP的信息和流程的織入。(切面類)

切面類中使用注解標識通知的類型。

?

六個注解,對應五種通知類型。

環(huán)繞通知:取代原有目標對象方法的通知,提供了回調(diào)原有目標對象方法的能力。原有目標對象

切點(Pointcut):向Spring描述哪些類的哪些方法需要啟動AOP編程。代碼中,使用了注解@Pointcut來定義切點。

通過添加接口來增強接口的功能,檢驗數(shù)據(jù)是否為空?

將原目標對象方法的參數(shù)傳遞到前置通知里面。

織入:是一個生成動態(tài)代理對象并且將切面和目標對象方法變成成為約定流程的過程。通過約定可以將一些業(yè)務邏輯織入流程中,并且可以將一些通用的邏輯抽離出來,然后給與默認實現(xiàn)。

Spring采用了JDK和CGLIB實現(xiàn)動態(tài)代理。

Spring可以支持多個切面的運行。

現(xiàn)在我們想對sayHello方法進行一個攔截,再方法的前后再增加一些方法,這些增加的方法和原方法sayHello組成一套約定的流程。

約定流程。

動態(tài)代理

我們先理解一下什么是動態(tài)代理。例如,當你需要采訪一名兒童時,首先需要經(jīng)過他父母的同意,在一些問題上父母會替他回答,而另外一些問題,父母覺得不太適合這個小孩會替孩子拒絕掉,顯然父母就是這名兒童的代理(proxy)。通過代理可以增強或者控制對真實對象的訪問。代理模式的作用

?

來源:https://www./content-4-329901.html

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多