spring的一些總結1

2021-09-09 07:50:08 字數 1942 閱讀 5091

spring是乙個service層的框架.

spring的主要技術是 ioc(di) aop

ioc(di) - 控制反轉(依賴注入)

aop - 面向切面程式設計

ioc稱之為控制反轉,簡單來說就是將物件的建立的權利及物件的生命週期的管理過程交由spring框架來處理,從此在開發過程中不再需要關注物件的建立和生命週期的管理,而是在需要時由spring框架提供,這個由spring框架管理物件建立和生命週期的機制稱之為控制反轉。而在 建立物件的過程中spring可以依據配置對物件的屬性進行設定,這個過稱之為依賴注入,也即di。

在初始化乙個spring容器時,spring會去解析指定的xml檔案,當解析到其中的標籤時,會根據該標籤中的class屬性指定的類的全路徑名,通過反射建立該類的物件,並將該物件存入內建的map中管理。其中鍵就是該標籤的id值,值就是該物件。

之後,當通過getbean方法來從容器中獲取物件時,其實就是根據傳入的條件在內建的map中尋找是否有匹配的鍵值,如果有則將該鍵值對中儲存的物件返回,如果沒有匹配到則丟擲異常。

通過context.getbeans()方法獲取bean時,可以通過如下兩種方式獲取:

傳入id值

傳入class型別

通過class方式獲取bean時,如果同乙個類配置過多個bean,則在獲取時因為無法確定到底要獲取哪個bean會丟擲異常。

而id是唯一的,不存在這樣的問題.

多次獲取同乙個id的bean,得到的將是同乙個物件

同乙個類,如果配置過多個標籤具有不同的id,每個id都會在內建map中有乙個鍵值對,即不同物件

別名依然是同乙個物件

通過類的無法構造方法建立物件

通過靜態工廠建立物件

例項工廠建立物件

spring工廠建立物件

spring容器管理的bean在預設情況下是單例的

scope屬性控制當前bean的建立模式:

singleton:則當前bean處在單例模式中,預設就是此模式

prototype:則當前bean處在多例模式中

bean在單例模式下的生命週期:

bean在單例模式下,spring容器啟動時解析xml發現該bean標籤後,直接建立該bean的物件存入內部map中儲存,此後無論呼叫多少次getbean()獲取該bean都是從map中獲取該物件返回,一直是乙個物件。此物件一直被spring容器持有,直到容器退出時,隨著容器的退出物件被銷毀。

bean在多例模式下的生命週期:

bean在多例模式下,spring容器啟動時解析xml發現該bean標籤後,只是將該bean進行管理,並不會建立物件,此後每次使用 getbean()獲取該bean時,spring都會重新建立該物件返回,每次都是乙個新的物件。這個物件spring容器並不會持有,什麼銷毀取決於使用該物件的使用者自己什麼時候銷毀該物件。

spring缺省會在容器初始化的過程中,解析xml,並將單例的bean建立並儲存到map中,(spring啟動時建立bean 花費大量的空間以及時間)

懶載入機制:規定指定的bean不在啟動時立即建立,而是在後續第一次用到時才建立,從而減輕在啟動過程中對時間和記憶體的消耗。(懶載入機制只對單例bean有作用,對於多例bean設定懶載入沒有意義)

配置方式:

為指定bean配置懶載入

為全域性配置懶載入

在spring中如果某個bean在初始化之後 或 銷毀之前要做一些 額外操作可以為該bean配置初始化和銷毀的方法 ,在這些方法中完成要功能。

在spring建立bean物件時,先建立物件(通過無參構造或工廠),之後立即呼叫init方法來執行初始化操作,之後此bean就可以哪來呼叫其它普通方法,而在物件銷毀之前,spring容器呼叫其destory方法來執行銷毀操作。

set方法注入:

spring內建的可直接注入型別的注入

非spring內建的可以直接注入型別的注入

基於構造方法的注入

自動裝配autowire---byname bytype

一些函式總結 1

windows api之 getmodulefilename 在開發軟體的過程裡,經常需要把資料儲存到當前執行檔案路徑下面,或者讀取當前執行檔案路徑下的一些配置資訊。這時就需要從當前模組裡獲取所在的目錄路徑,以便進行固定的位置操作檔案。要解決這個需求,就需要呼叫api函式getmodulefilen...

spring的一些註解

spring的一些註解 要使用spring註解首先肯定要用scanner,spring配置檔案中要有 其中com.neu就是要掃瞄的包 但是必須有下面的xmlns context以及最後3個schema xmlns xsi xmlns context xsi schemalocation sprin...

Spring的一些好處

1.減少耦合,簡化開發 2.面向切面 aop 程式設計 3.宣告式事物的支援,可以用註解的方式 4.junit4支援 5.可以很好的支援其他開源的框架資訊,例如 quartz,hibernate,mybatis,還有一些自帶的,例如 spring data jpa,spring templet,sp...