IOC的工作原理筆記

2021-10-09 21:56:34 字數 2238 閱讀 1448

(1)控制反轉,把物件建立和物件之間的呼叫過程,交給spring進行管理。

(2)使用ioc目錄:為了耦合度降低

底層用到 xml解析、工廠模式、反射

下面案例通過在userservice中呼叫userdao中的add()的需求來演示ioc的原理

直接呼叫原始方式

class userservice{

execute(){

userdao dao = new userdao();

dao.add();

}}

class userdao
工廠模式

解決思路,通過工廠方法use***ctory實現兩個類之間的結構,但是該方法解耦不夠徹底

目的:耦合度降低到最低限度,顯然這種模式雖然解耦了兩個類,但是增加userservice 與use***ctory的耦合度。

class userservice{

execute(){

userdao dao = use***ctory.getdao();

dao.add();

}}

class userdao
class use***ctory

}

ioc過程

第一步:xml配置檔案,配置建立的物件

第二步 有service類和dao類,建立工廠類

class use***ctory

}

第三步 與工廠模式呼叫方式相同

這樣就可以實現ioc

ioc思想基於ioc容器完成,ioc容器底層就是物件工廠

spring提供ioc容器實現兩種方式:(兩個介面)

(1) beanfactory:ioc容器基本實現,是spring內部的使用介面

載入配置檔案的時候不會建立物件,在獲取物件(使用)才建立物件

(1)spring建立物件

(2) spring注入屬性(1) 基於xml配置檔案方式實現

(2)基於註解方式實現

(1)在spring配置檔案中,使用bean標籤,標籤中新增對應的屬性,就可以實現物件的建立

(2)常用bean標籤屬性

id屬性:唯一標識

class屬性:類全路徑(包類路徑)

name屬性:與id相同,但其中可以加特殊符號,為早期struct1提供,現在已經沒人用了

(3)建立物件時候,預設也是執行無參構造方法完成 物件的建立(1)di:依賴注入,就是注入屬性

第一種注入方式:使用set方式進行注入

建立類,定義屬性和對應的set方法

public class book 

public void setbauthor(string bauthor)

}

在spring配置檔案中配置物件建立,配置屬性注入

測試**

@test

public void testadd()

第二種注入方式:使用有參構造進行注入

建立類,定義屬性,建立屬性對應有參構造

/**

1. 使用有參構造注入

*/public class orders

}

在spring配置檔案中進行配置

測試

第三種 p命名空間注入(了解)

使用p命名空間注入,可以簡化基於xml配置方式,新增p命名空間在配置檔案中

進行屬性的注入

Spring學習一之IOC工作原理 3

例項3 對例項2進行重構 增加helloworldfactory類 package com.nantian.spring.example3 import com.nantian.spring.example3.filehellostr 注入hellworld和hellostr依賴 author ps...

Spring學習一之IOC工作原理 4

上述幾篇內容都沒有涉及到spring的內容,就是為了更好地闡述spring的工作原理 如圖 如下 helloworld.properties 如圖 再重構helloworldclient類 如下 package com.nantian.spring.example4 import org.apach...

IOC實現原理

ioc 也就是 控制反轉 了,不過更流行的叫法是 依賴注入 di dependency injection 聽起來挺高深,其實實現起來並不複雜。下面就看看如何來實現這個輕量級 ioc 框架。從例項出發,先看看以下 action bean public class productaction exte...