Spring入門(mén)基礎(chǔ)之依賴注入
一、構(gòu)造器注入
在前幾節(jié)已經(jīng)做過(guò)了詳細(xì)的說(shuō)明講解,我們先跳過(guò)
二、set注入
依賴注入
依賴: bean對(duì)象的創(chuàng)建以及管理都依賴于Spring IOC容器
注入: bean對(duì)象中的所有屬性,都有容器進(jìn)行注入
在前面我們已經(jīng)見(jiàn)識(shí)過(guò)了 普通類(lèi)型注入和 bean注入的方式,那么對(duì)于復(fù)雜類(lèi)型List、數(shù)組類(lèi)型、Map、Set屬性等怎么進(jìn)行注入呢?
我們先提供一個(gè)包含各種類(lèi)型的實(shí)體類(lèi)
Student 類(lèi)
package com.kuang.pojo;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
@Setter
@Getter
@ToString
public class Student {
private String name;
private Address address;
private String[] books;
private List<String> hobbies;
private Map<String,String> card;
private Set<String> games;
private String wife;
private Properties info;
}Student類(lèi)中包含的 Address類(lèi)
package com.kuang.pojo;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class Address {
private String address;
}(1)基本類(lèi)型注入
<!-- 普通類(lèi)型注入-->
<property name="name" value="張三"/>(2)引用類(lèi)型(bean)注入
<bean name="address" class="com.kuang.pojo.Address"/>
<bean id="student" class="com.kuang.pojo.Student">
<!-- 引用類(lèi)型(bean)注入-->
<property name="address" ref="address"/>
<bean/>(3)數(shù)組類(lèi)型注入
<!-- 數(shù)組類(lèi)型注入 -->
<property name="books">
<array>
<value>紅樓夢(mèng)</value>
<value>水滸傳</value>
<value>西游記</value>
<value>三國(guó)演義</value>
</array>
</property>property 嵌套 array標(biāo)簽 ,array標(biāo)簽中又 通過(guò) value標(biāo)簽設(shè)置 數(shù)組中的值
(4)List類(lèi)型注入
<!--Lits 屬性注入-->
<property name="hobbies">
<list>
<value>打籃球</value>
<value>彈吉他</value>
<value>踢足球</value>
</list>
</property>property 嵌套 list標(biāo)簽 ,list標(biāo)簽中又 通過(guò) value標(biāo)簽設(shè)置 list中的值
(5)null 空值注入
<!-- null注入-->
<property name="wife">
<null/>
</property>property 嵌套 null標(biāo)簽,給指定屬性設(shè)置為null
(6)Map 類(lèi)型注入
<!-- Map注入-->
<property name="card">
<map>
<entry key="身份證" value="1111"/>
<entry key="飯卡" value="22222"/>
</map>
</property>property 嵌套 map標(biāo)簽 ,map標(biāo)簽中又 通過(guò) entry標(biāo)簽設(shè)置 key、value中的值
(7)Set 類(lèi)型注入
<!-- Set注入-->
<property name="games">
<set>
<value>塞爾達(dá)</value>
<value>馬里奧</value>
</set>
</property>property 嵌套 set標(biāo)簽 ,set標(biāo)簽中又 通過(guò)value標(biāo)簽設(shè)置set中的值
(8)Properties 類(lèi)型注入
<!-- properties注入-->
<property name="info">
<props>
<prop key="url">111</prop>
<prop key="username">root</prop>
<prop key="password">22222</prop>
</props>
</property>property 嵌套 props標(biāo)簽 , props標(biāo)簽中又 通過(guò)prop標(biāo)簽設(shè)置值
查看注入之后的結(jié)果,正確拿到結(jié)果

三、其他方式注入
(1)導(dǎo)入約束
其他拓展的注入有p命名注入和c命名注入,但是不能直接使用都需要引入xml約束
p命名空間注入xml約束
xmlns:p="http://www.springframework.org/schema/p"
c命名空間xml約束
xmlns:c="http://www.springframework.org/schema/c"
p命名和c命名是對(duì)注入方式的一種格式化
- p命名對(duì)應(yīng)著 property 屬性注入
- c命名對(duì)應(yīng)著 construct-arg 構(gòu)造參數(shù)注入
(2)p命名注入
<bean name="address" class="com.kuang.pojo.Address"/>
<bean id="student"
class="com.kuang.pojo.Student"
p:name="張三"
p:address-ref="address"
/>(3)c命名注入
<bean name="address" class="com.kuang.pojo.Address"/>
<bean id="student"
class="com.kuang.pojo.Student"
c:name="張三"
c:address-ref="address"
/>到此這篇關(guān)于Spring入門(mén)基礎(chǔ)之依賴注入的文章就介紹到這了,更多相關(guān)Spring依賴注入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringCloud Bus如何實(shí)現(xiàn)配置刷新
這篇文章主要介紹了SpringCloud Bus如何實(shí)現(xiàn)配置刷新,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Java使用代理進(jìn)行網(wǎng)絡(luò)連接方法示例
這篇文章主要介紹了Java使用代理進(jìn)行網(wǎng)絡(luò)連接方法示例,內(nèi)容十分詳細(xì),需要的朋友可以參考下。2017-09-09
Java數(shù)據(jù)結(jié)構(gòu)之插入排序與希爾排序
在本篇文章,我們將為小伙伴們進(jìn)行排序概念的基本講解并具體講解其中的兩種基礎(chǔ)排序:插入排序和希爾排序,希望小伙伴們能夠從中有所收獲2023-04-04
Java設(shè)計(jì)模式之策略模式原理與用法實(shí)例詳解
這篇文章主要介紹了Java設(shè)計(jì)模式之策略模式原理與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Java策略模式的概念、原理、定義及使用方法,并總結(jié)了相關(guān)的優(yōu)缺點(diǎn),具有一定參考借鑒價(jià)值,需要的朋友可以參考下2018-04-04
Spring aop+反射實(shí)現(xiàn)電話號(hào)加密
線上項(xiàng)目涉及大量查詢接口中,存在電話號(hào)明文展示不合規(guī)的問(wèn)題。如果對(duì)每個(gè)接口返回結(jié)果中電話號(hào)相關(guān)字段修改相關(guān)代碼邏輯,則工作量較大花費(fèi)時(shí)間多。因此設(shè)計(jì)電話號(hào)加密注解,減少工作量。2021-06-06
如何使用RequestHeaders添加自定義參數(shù)
這篇文章主要介紹了使用RequestHeaders添加自定義參數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2022-02-02
Java中ConcurrentHashMap是如何實(shí)現(xiàn)線程安全
ConcurrentHashMap是一個(gè)哈希表,支持檢索的全并發(fā)和更新的高預(yù)期并發(fā)。本文主要介紹了Java中ConcurrentHashMap是如何實(shí)現(xiàn)線程安全,感興趣的可以了解一下2021-11-11
基于java時(shí)區(qū)轉(zhuǎn)換夏令時(shí)的問(wèn)題及解決方法
下面小編就為大家分享一篇基于java時(shí)區(qū)轉(zhuǎn)換夏令時(shí)的問(wèn)題及解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-11-11

