然後從容器中直接獲取該物件,如下
// 得到ioc容器物件
// 從容器中獲取bean
strudent s = (strudent) ac.getbean("strudent");
至此,我們解決了物件建立的問題:把物件的建立交給外部容器,那麼如何解決物件的建立時間以及數量呢?
同樣在配置檔案中進行配置即可,如下
我們在配置的時候新增屬性scope,預設值為singleton,即預設建立物件時是單例的(適用於dao,service),而且容器啟動的時候就會建立物件
如果將scope設定為prototype,即設定物件為多例的(適用於action),而且當呼叫物件時再建立物件
也就是說,我們通過配置scope屬性即可解決了物件的建立時間以及數量問題
如果我們設定物件為單例(容器啟動時就應該建立物件),但是現在我們想要用到物件時再建立物件,那麼我們可以再新增乙個是否延遲載入的屬性,如下
lazy-init="true" 時,用到物件再建立
lazy-init="false"(預設)時,容器啟動就建立
屬性lazy-init只對單例有效,如果我們物件時多例的,則該屬性的設定無效
到目前為止,我們通過配置檔案方式解決了物件建立,建立時間,建立數量的問題,我們回過頭來再看一下物件建立,上面只介紹了一種呼叫無參建構函式的方式來建立物件,如下
此外,還有帶引數構造器建立物件,工廠類建立物件。分別如下
這裡假設strudent類有兩個屬性,乙個int age,乙個string name,並提供有參建構函式。
工廠類建立物件又分為非靜態方法建立物件和靜態方法建立物件
接下來我們介紹如何解決物件之間的依賴關係,即如何給物件的屬性賦值,常用方法如下
1)通過建構函式
2) 通過set方法給屬性注入值
3) p命名空間,這裡需要在配置檔案裡引入p命名空間
<?xml version="1.0" encoding="utf-8"?>
4) 註解
@controller // 控制層的元件
public class strudentaction
}
@component 指定把乙個物件加入ioc容器
@repository 作用同@component; 在持久層使用
@service 作用同@component; 在業務邏輯層使用
@controller 作用同@component; 在控制層使用
@resource 屬性注入
本篇文章主要介紹了ioc容器是如何解決物件建立(4種不同建立方式),建立時間(容器啟動時建立,需要時建立)及數量(單例,多例)的問題
同時介紹了如何解決物件直接依賴關係(di)的,使用頻率:註解》set()>p命名空間
Spring框架學習之IOC 二
spring框架學習之ioc 二 接著昨天的內容,下面開始ioc基於註解裝配相關的內容 在 classpath 中掃瞄元件 特定元件包括 component 基本註解,標識了乙個受 spring 管理的元件 respository 標識持久層元件 service 標識服務層 業務層 元件 contr...
Spring框架(二)IOC控制反轉
現階段裡隨著框架的深入式學習,環境的編寫越來越多,相反程式碼卻逐步縮減 匯入核心容器的四個jar包外加乙個日誌jar 到了spring這裡嘞,依然躲不過 xml 的對映,相比於mybatis環境的 dtd,spring則是改換成了dtd公升級版的 schma,從而更具擴充套件性。就像下面的一段xml...
spring基礎部分(二) IOC
1.把物件的建立交給spring進行管理 1 ioc的配置檔案方式 2 ioc的註解解釋1.ioc底層原理技術 1 xml配置檔案 2 dom4j解決xml 3 工廠設計模式 4 反射第一步 匯入jar包 1 解壓檔案 特點 每個功能都有三個jar包 2 做spring最基本功能時候,匯入四個核心j...