一、概述
? ? ? ? IOC(控制反轉(zhuǎn))負(fù)責(zé)對(duì)象的創(chuàng)建钙态。
? ? ? ? 本文介紹的DI(依賴(lài)注入)慧起,負(fù)責(zé)對(duì)象創(chuàng)建后,屬性的賦值册倒。通過(guò)xml的配置蚓挤,代替寫(xiě)代碼為對(duì)象屬性賦值。
二驻子、注入方法
2.1 set方法注入
2.1.1 Spring內(nèi)置類(lèi)型注入
? ? ? ? 基本類(lèi)型
????????<property name="id" value="1"></property>
? ? ? ? list類(lèi)型
? ? ????<property name="jobs">
????????????????<list>
????????????????????<value>上單</value>
????????????????????<value>坦克</value>
????????????????</list>
????????</property>
? ? ? ? set類(lèi)型
????????<property name="set">
????????????<set>
????????????????<value>沈騰</value>
????????????????<value>賈玲</value>
????????????</set>
????????</property>
? ? ? ? map類(lèi)型
????????<property name="map">
????????????<map>
????????????????<entry key="1" value="蝙蝠俠"></entry>
????????????????<entry key="2" value="雷神"></entry>
????????????????<entry key="3" value="美國(guó)隊(duì)長(zhǎng)"></entry>
????????????????<entry key="4" value="綠巨人"></entry>
????????????</map>
????????</property>
? ? ? ? property類(lèi)型
????????<property name="prop">
????????????<props>
????????????????<prop key="1">1</prop>
????????????????<prop key="2">2</prop>
????????????</props>
????????</property>
2.1.2 自定義類(lèi)型注入
????????<property name="dog" ref="dog"></property>
2.1.3 自定義類(lèi)型注入灿意,自動(dòng)裝配方法
配置全局自動(dòng)裝配
default-autowire="byName"
指定bean配置自動(dòng)裝配
<bean id="hero" class="com.dreamguard.domain.Hero" autowire="byName">
自動(dòng)裝配的兩種方式
byName:根據(jù)javabean中需要注入的屬性的名字 ,在spring容器中找對(duì)應(yīng)id的<bean>將該<bean>的對(duì)象復(fù)制給 當(dāng)前的屬性
byType:根據(jù)javabean中需要注入的屬性的類(lèi)型崇呵,在spring容器中找對(duì)應(yīng)class類(lèi)型的<bean>將該<bean>的對(duì)象復(fù)制給 當(dāng)前的屬性
**byType方式 根據(jù)類(lèi)型進(jìn)行匹配缤剧,可能匹配到多個(gè)<bean>,此時(shí)會(huì)拋出異常。而byName是通過(guò)id來(lái)尋找<bean>域慷,id沒(méi)有重復(fù)荒辕,不會(huì)有這方面的問(wèn)題汗销,所以推薦使用byName方式
2.2 構(gòu)造方法注入(不常用)
暫不介紹,可在給出的代碼抵窒,了解使用
完整代碼下載
????????https://github.com/hailindai/SpringSample