最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

Spring AOP(面向切面)

1. 前言

大家好,本小節(jié)重點介紹一個新知識 —— AOP 。作為入門的第一小節(jié),我們需要理解 AOP 的概念,了解 AOP 的專業(yè)術語,明白它的作用。

那么,到底什么是 AOP ,它存在的意義是什么,在開發(fā)中扮演了一個什么樣的角色呢?

隨著疑問,開始本小節(jié)的內(nèi)容。

2. 概述

2.1 AOP 的概念

AOP 并不是 Spring 框架的專屬名稱,它的全稱是 Aspect Oriented Programming ,意為:面向切面編程。

它是 OOP 的一個延續(xù),通過預編譯的方式和運行期間動態(tài)代理實現(xiàn)程序功能的統(tǒng)一維護的一種技術。

名詞解釋:

面向切面編程:

? 其實切面是數(shù)學中的一個概念,表示只有一個點接觸到球體的一個平面稱呼為切面,而接觸點稱呼為切點。那么在 Spring 中,切面編程指的是什么呢?

就是在程序運行某個方法的時候,不修改原始執(zhí)行代碼邏輯,由程序動態(tài)地執(zhí)行某些額外的功能,對原有的方法做增強,這就叫做面向切面編程。

那個被監(jiān)測的執(zhí)行方法,稱之為切入點。

2.2 AOP 的意義

我們明白了 AOP 的概念,它是一種編程設計模式,是一種編程技術,那么為什么在程序中使用它呢?

  1. Spring 框架的中心宗旨之一是非侵入性,使用 AOP 可以很方便地在某些場景實現(xiàn)特定的功能,通過修改配置即可以實現(xiàn)增加或者去除某些附加功能;
  2. AOP 設計的功能代碼可以復用,代碼耦合性更低,代碼更加整潔;
  3. 使用 Spring 提供的 AOP ,讓我們更加注重業(yè)務代碼實現(xiàn)本身,而無需關注底層設計模式與實現(xiàn)方式。

3. 術語解釋

3.1 Join point(連接點)

所謂連接點是指那些被攔截到的點。在 Spring 中這些點指的是方法,可以看作正在訪問的,或者等待訪問的那些需要被增強功能的方法。Spring 只支持方法類型的連接點。

3.2 Pointcut(切入點)

所謂切入點是一個規(guī)則,定義了我們要對哪些 Joinpoint 進行攔截。因為在一個程序中會存在很多的類,每個類又存在很多的方法,而哪些方法會應用 AOP 對該方法做功能增強呢?

這就需要依據(jù)我們配置的切入點規(guī)則。

3.3 Advice(通知)

所謂通知是指攔截到 Joinpoint 之后所要做的事情就是通知。 也就是對方法做的增強功能。

通知分類

  1. 前置通知:在連接點之前運行的通知類型,它不會阻止流程進行到連接點,只是在到達連接點之前運行該通知內(nèi)的行為,當然 -—— 除非它引發(fā)異常;
  2. 后置通知:在連接點正常完成后要運行的通知,正常的連接點邏輯執(zhí)行完,會運行該通知,當然 —— 方法正常返回而沒有引發(fā)異常;
  3. 最終通知:無論連接點執(zhí)行后的結(jié)果如何,正常還是異常,都會執(zhí)行的通知;
  4. 異常通知:如果連接點執(zhí)行因拋出異常而退出,則執(zhí)行此通知;
  5. 環(huán)繞通知:環(huán)繞通知可以在方法調(diào)用之前和之后執(zhí)行自定義行為。

3.4 Target (目標)

Target 指的是代理的目標對象,更通俗的解釋就是:AOP 對連接點方法做增強,底層是代理模式生成連接點所在類的代理對象,那么連接點所在的類,就是被代理的類稱呼為 Target。

3.5 Aspect(切面)

切面本質(zhì)是一個類,只不過是個功能類,作為整合 AOP 的切入點和通知。一般來講,需要在 Spring 的配置文件中配置,或者通過注解來配置。

3.6 Weaving(織入)

織入是一種動作的描述,在程序運行時將增強的功能代碼也就是通知,根據(jù)通知的類型(前綴后綴等…)放到對應的位置,生成代理對象。

3.7 Proxy(代理)

一個類被 AOP 織入增強后,產(chǎn)生的結(jié)果就是代理類

4. 小結(jié)

本小節(jié)主要是 AOP 的入門介紹,那么重點給大家講述了 AOP 的概念、意義、以及常見術語。

當然對于初學者而言,文字描述略顯蒼白和枯燥,而我們本小節(jié)目的也是給大家做個鋪墊,

對一些名詞做個解釋和介紹,以便后續(xù)測試案例的講解。