色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

如何理解Spring中的IOC和AOP

林雅南2年前13瀏覽0評論

如何理解Spring中的IOC和AOP?

感謝邀請!

IOC

1、什么是 IOC/DI ?

① IOC(Inversion of Control) 控制反轉:所謂控制反轉,就是把原先我們代碼里需要實現的對象創建、依賴的代碼,反轉給容器來來幫忙實現。那么必然的我們需要創建一個容器,同時需要一種描述來讓容器知道需要創建的對象與對象的關系。這種描述最具體表現就是我們的可配置文件。

② DI(Dependency Injection) 依賴注入: 就是指對象時被動接受依賴類而不是主動去找,歡聚話說 就是指對象不是從容器中查找它依賴的類,而是在容器實例化對象的時候主動將它依賴的類注入給它

2、如何理解IOC/DI

想要理解上面的概念,就必須搞清楚如下的問題:

① 參與者都是誰?

② 依賴: 誰依賴誰?為什么需要依賴?

③ 注入: 誰注入誰?到底注入什么?

④ 控制反轉:誰控制誰?控制什么?為何叫反轉?

⑤ 依賴注入和控制反轉是同一概念嗎?

下面我們來回答上面的問題:

(1) 參與者都有誰: 一個對象,IOC容器,被依賴的對象

(2) 誰依賴誰? 某個對象依賴IOC容器

(3) 為什么需要依賴: 對象需要IOC容器給其注入其需要的資源

(4) 誰注入誰?IOC容器注入某個對象

(5) 誰控制誰?IOC 容器 來控制對象的生命周期

(6) 控制什么?控制對象的創建、初始化、銷毀

(7) 為何叫反轉?

如果我們平常寫一個程序,如果A類中需要C對象,那么我們會直接new一個C對象,A類主動的去獲取C對象,這種情況叫做正向的。

什么叫反向呢?就是A類不主動去創建C,而是等IOC容器給A注入C。

3、控制反轉和 依賴注入是同一概念嗎?

依賴注入和控制反轉是對同一件事情的不同描述。

依賴注入是從程序方面講的: 應用程序依賴容器給我注入其所需要的資源。

控制反轉: 容器控制應用程序,由容器反向地向應用程序注入其所需要的資源。

AOP

1、概念

面向切面編程,即AOP,是一種編程思想,它允許程序員對橫切關注點或橫切典型的職責分界線 的行為(例如日志和事務管理)進行模塊化。AOP的核心構造是方面(切面),它將那些影響多個類的行為封裝到可重用 的模塊中。

AOP的功能完全繼承到了Spring事務管理、日志和其他各種特性的上下文中。

2、核心概念

① 橫切關注點(對哪些方法進行切入):對哪些方法進行攔截,攔截后怎么處理,這些關注點稱為橫切關注點

②切面(Aspect) 把原來揉碎的業務邏輯中的非業務代碼抽取出來,把功能相同的放在一個類中形成一個切面

類是對物體特征的抽象,切面是對橫切關注點的抽象。

③ 連接點(joinpoint)(需要切入的點) :被 的攔截到的點,因為Spring只支持方法類型的連接點,所以Spring中連接點指的就是被攔截到的方法

④切入點(poincut):對連接點進行攔截的定義

⑤通知(Advice)

所謂通知指的就是指攔截到連接點之后要執行的代碼,通知分為前置、后置、異常、最終、環繞通知

⑥ 目標對象:代理的目標對象

⑦織入(weave)) :將切面應用到目標對象并導致代理對象創建的過程

⑧引入(introduction):在不修改代碼的 前提下,引入可以在運行期為類動態地添加一些方法或字段

3、常用場景

① Authentication權限認證

② Logging日志

③ Transctions Manager事務

④ Lazy Loading 懶加載

⑤ Context Process上下文處理

⑥ Error Handler錯誤跟蹤(異常捕獲機制)

⑦ Cache緩存

4. Spring AOP 底層是怎么實現的?

最終使用動態代理: JDK動態代理和CGlib動態代理

5、我們學Spring AOP 能需要什么?

自定義組件: 業務操作對象,可能要經過一系列的校驗操作

1、聲明一個一個校驗接口,定義校驗規則

1.1 寫一個抽象類(把公共的校驗規則寫在這里)

2、有多少種校驗規則類,就實現該接口

① 校驗規則有先后順序,定義order接口或者注解都可以,枚舉

② 業務類型--匹配我的規則 A業務只要123 B業務需要234

③ 依賴查找:

@Autowired

private Map<String,IDepence> depends;

Spring會自動把Idepence的實現類注入進去

④創建一個規則鏈對象