Spring中depends on的作用是什麼?

2021-09-02 10:55:17 字數 1089 閱讀 3656

spring的ioc容器負責bean的管理,當例項化乙個bean是,spring保證該bean所依賴的其他bean已經初始化。一般情況下,用元素建立對其他bean的依賴關係。

比如:

但在某些情況下,這種bean之間的依賴關係並不那麼明顯。

舉個例子:某個論壇系統擁有很多系統引數(如會話過期時間、快取更新時間等),這些系統引數用於控制系統的執行邏輯。比如:

public class systemsettings
在systemsettings中為每乙個系統引數提供了預設值,但對於乙個靈活的論壇是需要提供乙個管理後台的,在管理後台中可以調整這些系統引數並儲存到後台資料庫中,而在系統啟動時,初始化程式從資料庫後台載入這些系統引數的值來覆蓋系統預設值。比如:

public class systeminit

}

假設論壇系統有乙個快取重新整理管理器,它需要根據系統引數

systemsettings.

refresh_cycle建立快取重新整理定時任務:

public class cachemanager

......

}

在以上的例項中,cachemanager類需要用到s

ystemsetting類的

值,而systemsettings的值有systeminit負責初始化,雖然cachemanager不直接依賴systeminit,但從邏輯上看,

cachemanager希望在systeminit載入並完成系統引數設定後再啟動,以獲得最新的系統引數值。如果這三個bean都在spring配置檔案中定義,我們如何保證systeminit在

cachemanager之前進行初始化呢?

spring允許使用者通過depends-on屬性指定bean前置依賴的bean,前置依賴的bean會在本bean例項化之前建立好:

如果前置依賴於多個 bean,則可以通過分號,逗號或空格的方式配置 bean 的名稱。

Spring複習筆記 Spring中的Bean

注意構造器例項化 最常用 靜態工廠方式例項化 例項工廠方式例項化 singleton 單例 始終使用的同乙個物件 預設 prototype 原型 每次都是乙個新的bean例項 request session globalsession websocket init method屬性 用於指定bean...

Spring中 Transactional的使用

1.在需要事務管理的地方加 transactional註解,transactional 註解可以被應用於介面定義和介面方法 類定義和類的 public 方法上.2.transactional 註解只能應用到 public 可見度的方法上,如果你在 protected private 或者 packa...

Spring中 Transactional失效問題

spring中的宣告式註解 transactional很大程度的方便了開發者進行db資料儲存。但是在一些特殊情況下,可能會造成註解不是按想定的方式生效,這裡說幾種可能造成的幾種情況。這是一種比較簡單不過稍不注意也可能會犯的情況。spring中事務提交還是回滾是根據呼叫的方法是否丟擲異常來決定的,因此...