spring發展到現在遵循「約定大於配置」原則,在基本的應用配置上(如資料庫配置),建議採用xml配置方式;在業務邏輯處理上,建議採用註解方式。回顧過往,xml配置方式真的讓人又愛又恨。所以,本節通篇採用xml配置方式。
傳統應用程式設計中所說的依賴一般指「類之間的關係」,那先讓我們複習一下類之間的關係:
spring ioc容器的依賴有兩層含義:bean依賴容器和容器注入bean的依賴資源: 為什麼要應用依賴注入,應用依賴注入能給我們帶來哪些好處呢?採用物件組合,bean的功能可能由幾個依賴bean的功能組合而成,其bean本身可能只提供少許功能或根本無任何功能,全部委託給依賴bean,物件組合具有動態性,能更方便的替換掉依賴bean,從而改變bean功能;由此可以看出,其實依賴注入只是一種裝配物件的手段,設計的類結構才是基礎,如果設計的類結構不支援依賴注入,spring ioc容器也注入不了任何東西,從而從根本上說「如何設計好類結構才是關鍵,依賴注入只是一種裝配物件手段」。而如果採用類繼承,bean沒有依賴bean,而是採用繼承方式新增新功能,,而且功能是在編譯時就確定了,不具有動態性,而且採用類繼承導致bean與子bean之間高度耦合,難以復用。
前邊ioc一章我們已經了解了bean依賴容器,那容器如何注入bean的依賴資源,spring ioc容器注入依賴資源主要有以下兩種基本實現方式:
我們已經知道注入實現方式了,接下來讓我們來看看具體配置吧。先定義乙個汽車類
/**
* 依賴注入
* 構造方法的注入方式
*/public class car
@override
public string tostring()
}
xml配置:
汽車出來,總得有人去開車,造個人出來吧,person類:
public class person
@override
public string tostring()
}
xml配置檔案:
/**
* 依賴注入
* set方法的注入方式
*/public class car2
public void setname(string name)
public double getprice()
public void setprice(double price)
@override
public string tostring()
}
xml配置:
測試類:
public class test01
}
測試結果:
構造方法注入:car [name=奇瑞qq, price=2000.0]
構造方法注入:person [name=xiaoming, car=car [name=奇瑞qq, price=2000.0]]
set方法注入:car [name=賽特, price=998.0]
spring不僅能注入簡單型別資料,還能注入集合(collection、無序集合set、有序集合list)型別、陣列(array)型別、字典(map)型別資料、properties型別資料,接下來就讓我們乙個個看看如何注入這些資料型別的資料。
/**
* 複雜型別的注入
*/public class collectionbean
public void setset(setset)
public void setmap(mapmap)
public void setproperties(properties properties)
public void setlist(listlist)
@override
public string tostring()
}
xml配置:
<?xml version="1.0" encoding="utf-8"?>
哈哈呵呵嘿嘿
小雷小風小雨
set集合
root
123
測試類:
public class test05
}
測試結果:
複雜型別注入:
collectionbean [
arrs=[哈哈, 呵呵, 嘿嘿],
list=[小雷, 小風, 小雨],
set=[set, 集合], map=, properties=
]
讓我們來總結一下依賴注入配置及簡寫形式,其實我們已經在以上部分穿插著進行簡化配置了:
1)常量值
簡寫:2)引用常量"/>
全寫:常量
簡寫:1)常量值ref="
引用"/>
全寫:<
ref bean="引用
"/>
簡寫:2)引用常量"/>
全寫:常量property>
簡寫:3)陣列:沒有簡寫形式ref="
引用"/>
全寫:<
ref bean="引用
"/>
property>
4)列表:沒有簡寫形式
5)集合:沒有簡寫形式
6)字典
簡寫:
全寫:
7)properties:沒有簡寫形式鍵常量值常量
使用p命名空間來簡化setter注入,具體使用如下:
<?xml version="1.0" encoding="utf-8"?>
Spring框架之DI(依賴注入
di dependency injection 依賴注入 is a 是乙個,繼承。has a 有乙個,成員變數,依賴。class b 依賴 乙個物件需要使用另乙個物件 注入 通過setter方法進行另乙個物件例項設定。例如 class bookserviceimpl 模擬spring執行過程 建立s...
spring框架 DI依賴注入(二)
一 set方法的注入 1.介紹 2.展示 先寫乙個userdao介面 package com.hnpi.dao public inte ce userdao 實現這個介面的方法 package com.hnpi.dao.impl import com.hnpi.dao.userdao public ...
Spring依賴注入(DI)
在spring框架中,依賴注入 di 的設計模式是用來定義物件彼此間的依賴。它主要有兩種型別 這是最流行最簡單的di注入方法,通過設定方法注入依賴。示例 幫助器類和指定的setter方法 package com.yiibai.output import com.yiibai.output.ioutp...