一般情況下, 可以使用標籤建立對其他bean的依賴關係, spring負責管理這些bean的關係. 當例項化乙個bean時, spring確保該bean所依賴的其他bean, 已經初始化.
在某些情況下, bean之間的依賴關係並不明顯.
**示例如下:
cachemanager 依賴於 systemsettings 類. systemsettings的靜態屬性的值由 sysinit 進行重新整理. cachemanager 間接依賴了 sysinit. 應該在 sysinit載入並完成系統引數設定之後才啟動 cachemanager.
載入上述配置檔案, 通過spring容器建立 cachemanager bean, 輸出的不是系統引數的重新整理值, 因為容器沒有建立 sysinit 例項, 進而不能初始化系統引數.
spring 通過 depends-on 屬性顯示指定 bean前置依賴的 bean. 前置依賴的 bean會在本 bean例項化之前建立好. 配置檔案如下:
通過 depends-on 屬性將 init 指定為 cache 前置依賴的 bean. 保證在例項化執行時所引用的系統引數是最新的設定值. 如果前置依賴於多個 bean, 則可通過 逗號, 分號, 空格的方式建立 bean的名稱.
2.繼承
如果多個存在相同的配置資訊, spring 允許定義乙個父, 子將自動繼承父的配置資訊.
**示例如下:
上述兩個bean的配置存在大量重複資訊, 二者除屬性color 不同外, 其他配置資訊相同. 通過父子的繼承關係就可以很好地消除重複的**.
定義乙個"父類", 將兩個bean相同配置的屬性封裝進"父類"中.
c1和c2 這兩個子都通過 parent="abstartcar" 屬性繼承了父. spring會將父的配置資訊傳遞給子, 如果子提供了父已有的配置資訊, 子的配置資訊將覆蓋父的配置資訊.
將父中的屬性設定為 abstract="true" 表示這個bean不是例項化為乙個對應的bean. 父只是為了簡化子配置資訊. 如果使用者沒有指定 abstract="true" ,ioc容器則會將父例項化為乙個對應的bean.
3.引用
乙個bean要直接引用另乙個bean的id 屬性, 則可以直接使用如下配置方式:
通過以子面值的形式進行設定, 二者並沒有建立引用關係. 一般情況下, 在乙個bean中引用另乙個bean的id 是希望在執行期通過getbean()獲取對應的bean. spring並不會在啟動時對屬性配置值進行特殊檢查, 即使編寫錯誤, 也要等到具體呼叫才能發現.
spring為此提供了乙個 元素標籤. 可以通過去引用另乙個 bean的名字. 在容器啟動時, spring負責檢查容器引用的正確性, 可以提前發現錯誤.
通過標籤為 person bean 的 studentid 屬性注入 stu bean 的引用. 可以通過 person 物件 getstudentid() 來獲取 id=stu ;
從而讓spring容器建立 stu bean例項.
Jenkins job之間依賴關係配置
構建觸發器 配置如下資訊 選擇 build after other projects are built project to watch 依賴的專案名稱 trigger only if build is stable 只有在a專案構建文件後進行構建,過濾條件 這樣我們執行a專案構建,緊接著b專案也...
Spring的註解配置與XML配置之間的比較
注釋配置相對於 xml 配置具有很多的優勢 它可以充分利用 j a 的反射機制獲取類結構資訊,這些資訊可以有效減少配置的工作。如使用 jpa 注釋配置 orm 對映時,我們就不需要指定 po 的屬性名 型別等資訊,如果關係程式設計客棧表字段和 po 屬性名 型別都一致,您甚至無需編寫任務屬性對映資訊...
Python中類之間的關係
子類和父類主要描述的是類之間的繼承關係,即所屬關係。繼承 的類可在被繼承的類的基礎上新增格外的引數和行為,新類稱為子類,擴充套件類 被繼承的類稱為基類 父類或者超類。使用方法 基本格式 class father object 父類 def init self,name,age self.name n...