spring兩大核心 IOC和AOP之詳細學習

2021-10-07 20:19:32 字數 2954 閱讀 1932

spring核心:

ioc、aop

1.ioc概念和原理

什麼是ioc

(1)控制反轉,把物件的建立和物件之間的呼叫過程,交給spring來實現

(2)使用ioc的目的:降低耦合度;

2.ioc底層原理

2.1 ioc的發展歷程:

1.最原始的方式:例如:userservice呼叫userdao的方法時,是在userservice中建立userdao的物件,然後呼叫userdao的方法;但這種方式耦合度較高;一旦userdao發生改變,userservice就需要做出改變,所以出現了工廠類

2.工廠類建立物件:通過工廠類建立物件,然後呼叫工廠類的方法類呼叫userdao類中的方法,這樣減低了userservice和userdao的耦合度,但是這樣耦合度還是不夠低,所以出現了ioc

3.ioc建立物件

1.xml解析、工廠模式、反射

ioc過程

a.首先通過配置檔案,配置要建立的物件

b.建立工廠類: 通過xml解析獲取「class」屬性:即得到類的路徑string classvalue=class屬性值

通過反射建立物件:class classname=class.forname(classvalue);得到位元組碼檔案

classname.newinstance(); 建立新例項

2.2 ioc介面

1.ioc思想是基於ioc容器完成,容器本身就是工廠類

2.spring提供ioc實現的兩種方式(兩個介面)

(1)beanfactory 內部使用,不提供給開發人員進行使用;載入配置檔案時不會建立物件,只有在獲取的時候才會建立物件

3.ioc操作bean管理

1.什麼是bean管理

(1)spring建立物件

(2)spring注入屬性

2.bean管理操作有兩種方式

(1)基於xml配置檔案方式實現

建立物件:在spring配置檔案中使用bean標籤,在標籤內新增對應屬性,就可以實現物件建立

bean屬性:

id 標識

class 要建立的類所在的全路徑

name struct1中用,現在不怎麼用

建立物件時,預設也是執行無參構造方法完成物件的建立

注入屬性:

(1)di:依賴注入:就是注入屬性(建立物件的基礎之上注入屬性)

第一種:使用set方法

第二種:有參構造注入

1.字面量

null

屬性值含有特殊字元1.使用轉義字元 < < > >

bean的作用域:在spring可以設定建立bean例項是單例項還是多例項

scope:

singleton:載入配置檔案時就建立物件:單例項

prototype:載入配置檔案時不建立物件,在呼叫getbean()方法時才建立物件:多例項

ioc操作bean管理(bean生命週期)

1.通過構造器建立bean例項(無參構造方法)

2.為bean屬性設定值和對其他bean引用(呼叫set方法)

3.呼叫bean的初始化方法(需要配置初始化的方法)

4.bean可以用使用(物件獲取到了)

5.當容器關閉的時候,呼叫bean的銷毀方法(需要配置銷毀的方法)

ioc操作bean管理(xml自動配置)

autowire:

byname

bytype:同一型別不能建立多個物件

(2)基於註解方式實現

使用註解的目的:簡化xml配置

spring針對bean管理中建立物件提供的註解

1.@component 普通元件

2.@service service層

3.@controller web層

4.@repository dao層

都可以用用來建立bean例項

基於註解方式實現屬性注入:

1.@autowired:根據屬性型別進行注入

2.@qualifier 根據屬性名稱進行注入

3.@resource 根據型別就行注入,也可以根據根據名稱進行注入

4.@value: 注入普通型別屬性

完全註解方式:代替xml配置

aop

什麼是aop

(1)aop:面向切面程式設計:利用aop可以對業務邏輯的各個部分進行隔離,使得業務邏輯各個部分之間的耦合度降低,提高程式的可重用性,同時也提高了開發的效率。

(2)通俗的講:在不改變源**的情況下,在主幹功能裡新增新功能;

底層原理:

1.aop底層使用動態**

a.有介面情況:使用jdk動態**

建立介面實現類**物件,增強類的方法

b.沒有介面情況:使用cglib動態**

建立當前類子類的**物件,增強類的方法

aop術語:

1.連線點:類中的哪些方法可以被增強,這些方法就成為連線點

2.切入點:實際被增強的方法

切入點表示式:execution(許可權修飾符返回型別類全路徑方法名稱(引數列表))許可權修飾和返回型別用*

某一類中某一方法:execution(* 全類名.方法名(…))

某一類中所有方法:execution(* 全類名.(…))

某一包中所有類的所有方法:execution( 包名..(…))

3.通知(增強):

1.實際增強的邏輯部分成為通知(增強)

通知型別:五種

@before前置通知、

@afterreturning後置通知 :返回結果後才執行;如果有異常就不執行

@after 最終通知:一定被執行

@around環繞通知、

@afterthrowing 異常通知 有異常時才執行

4.切面:是動作,把通知應用到切入點的過程

spring兩大核心之一(ioc)

spring兩大核心之一 ioc ioc 控制反轉,依賴注入。將物件的管理權交給sping工廠管理,也就是說從以前的new物件 建立物件 到現在的將物件交給spring工廠通過配置或掃瞄 建立物件 顧名思義 就是換種方式建立物件。使用依賴注入能更好的使模組之間解耦。案例 person person ...

深入認識Spring兩大特性IOC和AOP

眾所周知,spring有兩大特性 ioc和aop。ioc 英文全稱是inversion of control,意為控制反轉 依賴注入。aop 英文全稱是aspect oriented programming,意為面向切面程式設計。總的來說,spring是乙個輕量級的控制反轉 ioc 和面向切面程式設...

深入理解Spring的兩大特徵(IOC和AOP)

1.降低了元件之間的耦合性 實現了軟體各層之間的解耦 2.可以使用容易提供的眾多服務,如事務管理,訊息服務等 3.容器提供單例模式支援 4.容器提供了aop技術,利用它很容易實現如許可權攔截,執行期監控等功能 5.容器提供了眾多的輔助類,能加快應用的開發 6.spring對於主流的應用框架提供了整合...