Spring框架基礎(二)IOC容器和DI

2021-08-29 16:46:51 字數 1660 閱讀 4603

然後從容器中直接獲取該物件,如下

// 得到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...