最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring IOC (DI) 依賴注入的四種方式示例詳解

 更新時間:2023年06月26日 11:45:17   作者:清瀟和梨花  
這篇文章主要介紹了Spring IOC (DI) 依賴注入的四種方式,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

依賴注入的四種方式:

set 注入

賦值,默認(rèn)使用的是set() 方法,依賴注入底層是通過反射實現(xiàn)的

<bean id="student" class="cust.zaw.entity.Student">
	<property name="stuName" value="lc"></property>
</bean>

構(gòu)造器注入

使用構(gòu)造方法注入

<bean id="student" class="cust.zaw.entity.Student">
參數(shù)順序相同的話,可以不寫index
<constructor-arg value=""></constructor-arg>
參數(shù)順序不同的話,寫index或者name或者type
<constructor-arg value="" index=“0”></constructor-arg>
<constructor-arg value="" index=“1”></constructor-arg>
<constructor-arg value="" name=“”></constructor-arg>
<constructor-arg value="" type=“”></constructor-arg>
</bean>

p命名空間注入

引入命名空間就是加一句話:xmlns:p=“http://www.springframework.org/schema/p”

也可以這樣引入,它會自動引入命名空間

引入命名空間后,就可以這樣以這樣的方式實現(xiàn)依賴注入

<bean id="student" class="cust.zaw.entity.Student" p:stuAge="" p:stuName="" p:stuNO-ref="">
</bean>
  • 注意:

無論是String 還是int / short / long ,在賦值時都是value=“值”,因此建議 配合type / name 進(jìn)行區(qū)分

  • IOC 容器賦值:

簡單類型,value=“”對象類型(當(dāng)一個類中有其他類 類型,為其賦值時使用),ref=“需要引用的id值”

注入各種集合數(shù)據(jù)類型

List Set Map properties

寫一個實體類

package cust.zaw.entity;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class AllCollectionType {
	private List<String> list;
	private String[] array;
	private Set<String> set;
	private Map<String,String> map;
	private Properties props;
	public List<String> getList() {
		return list;
	}
	public void setList(List<String> list) {
		this.list = list;
	}
	public String[] getArray() {
		return array;
	}
	public void setArray(String[] array) {
		this.array = array;
	}
	public Set<String> getSet() {
		return set;
	}
	public void setSet(Set<String> set) {
		this.set = set;
	}
	public Map<String, String> getMap() {
		return map;
	}
	public void setMap(Map<String, String> map) {
		this.map = map;
	}
	public Properties getProps() {
		return props;
	}
	public void setProps(Properties props) {
		this.props = props;
	}
	@Override
	public String toString() {
		String strContent=null;
		for(String str : array) {
			strContent +=str + ",";
		}
		return "AllCollectionType [getList()=" + getList() + ", getArray()=" + Arrays.toString(getArray())
				+ ", getSet()=" + getSet() + ", getMap()=" + getMap() + ", getProps()=" + getProps() + "]"+strContent;
	}
}

編寫配置文件

<bean id="collectionDemo" class="cust.zaw.entity.AllCollectionType">
		<property name="list">
			<list>
				<value>足球</value>
				<value>籃球</value>
				<value>乒乓球</value>
			</list>
		</property>
		<property name="array">
			<array>
				<value>足球1</value>
				<value>籃球1</value>
				<value>乒乓球1</value>
			</array>
		</property>
		<property name="set">
			<set>
				<value>足球2</value>
				<value>籃球2</value>
				<value>乒乓球2</value>
			</set>
		</property>
		<property name="map">
			<map>
				<entry>
					<key>
						<value>football3</value>
					</key>
					<value>足球3</value>
				</entry>
				<entry>
					<key>
						<value>basketball3</value>
					</key>
					<value>籃球3</value>
				</entry>
				<entry>
					<key>
						<value>ppq3</value>
					</key>
					<value>乒乓球3</value>
				</entry>
			</map>
		</property>
		<property name="props">
			<props>
				<prop key="football4">足球4</prop>
				<prop key="baskball4">籃球4</prop>
				<prop key="pp4">乒乓球4</prop>
			</props>
		</property>		
	</bean>

獲取輸出

public static void collectionDemp() {
?? ??? ?ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
?? ??? ?AllCollectionType type=(AllCollectionType)context.getBean("collectionDemo");
?? ??? ?System.out.println(type);
?? ?}

給對象類型賦值null:

<!-- 注意沒有<value> -->
<property name="name">
			<null/>
</property>

賦空值

<property name="name">
			<value></value>
</property>

自動裝配注入(只適用于 ref 類型):

約定優(yōu)于配置

  • byName:自動尋找:其他bean的id值 = 該Course類的屬性名
  • byType:其他類型(class)是否與該Course類的ref 屬性類型一致
  • (必須滿足當(dāng)前ioc容器只有一個bean滿足)
  • constructor:其他bean的類型(class)是否與該Course 類的構(gòu)造方法參數(shù) 的類型一致;
<!--
		autowire="byName"
		Course類中有一個ref屬性teacher(屬性名),并且該ioc容器中恰好有一個 bean的id也是teacher
		bean的id=類的屬性名 
 -->
<bean id="student" class="cust.zaw.entity.Student" autowire="byName">
		<property name="stuNO" value="2"></property>
		<property name="stuName" value="lc"></property>
		<property name="stuAge" value="24"></property>
		<!-- <property name="teacher" ref="teacher"></property>-->
</bean>

可以在頭文件中,一次性將ioc容器的所有bean 統(tǒng)一設(shè)置成自動裝配自動裝配雖然可以減少代碼量,但是會降低程序可讀性

<beans xmlns="http://www.springframework.org/schema/beans"
	....
	default-autowire="byName">

到此這篇關(guān)于Spring IOC (DI) 依賴注入的四種方式的文章就介紹到這了,更多相關(guān)Spring IOC依賴注入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Sleuth+logback 設(shè)置traceid 及自定義信息方式

    Sleuth+logback 設(shè)置traceid 及自定義信息方式

    這篇文章主要介紹了Sleuth+logback 設(shè)置traceid 及自定義信息方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Idea上傳、拉取、更新項目到gitee的實現(xiàn)

    Idea上傳、拉取、更新項目到gitee的實現(xiàn)

    該文章介紹了將Idea項目上傳至Gitee的步驟,包括創(chuàng)建本地倉庫、添加到緩沖區(qū)、提交到本地倉庫、推送至遠(yuǎn)程倉庫等以及從Gitee拉取項目的方法,整個過程涉及到創(chuàng)建遠(yuǎn)程倉庫、項目上傳、更新項目等和提交等內(nèi)容
    2026-04-04
  • SpringMVC源碼解讀之HandlerMapping

    SpringMVC源碼解讀之HandlerMapping

    這篇文章主要介紹了SpringMVC源碼解讀之HandlerMapping 的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • Java實現(xiàn)多項式乘法代碼實例

    Java實現(xiàn)多項式乘法代碼實例

    今天小編就為大家分享一篇關(guān)于Java實現(xiàn)多項式乘法代碼實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Spring Security 強制退出指定用戶的方法

    Spring Security 強制退出指定用戶的方法

    本篇文章主要介紹了Spring Security 強制退出指定用戶的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • IDEA2020導(dǎo)入非maven項目并部署tomcat的方法

    IDEA2020導(dǎo)入非maven項目并部署tomcat的方法

    這篇文章主要介紹了IDEA 2020 導(dǎo)入非maven項目并部署tomcat的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 淺談Spring-boot事件監(jiān)聽

    淺談Spring-boot事件監(jiān)聽

    這篇文章主要介紹了淺談Spring-boot事件監(jiān)聽,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • springboot集成nacos報錯:get data from Nacos error,dataId:null.yaml的原因及解決方法

    springboot集成nacos報錯:get data from Nacos 

    這篇文章給大家介紹了springboot集成nacos報錯:get data from Nacos error,dataId:null.yaml的原因及解決方法,如果又遇到相同問題的朋友可以參考閱讀本文
    2023-10-10
  • Spring?Boot?基于?SAML?實現(xiàn)單點登錄原理解析

    Spring?Boot?基于?SAML?實現(xiàn)單點登錄原理解析

    基于SAML在 Spring Boot 中實現(xiàn)單點登錄雖然有一定的復(fù)雜度,但能為企業(yè)級應(yīng)用帶來強大的身份驗證和授權(quán)功能,本文將詳細(xì)介紹在 Spring Boot中基于SAML實現(xiàn)單點登錄的原理、方式、優(yōu)缺點及注意事項,并給出具體代碼示例,感興趣的朋友一起看看吧
    2025-06-06
  • 談?wù)凧ava中整數(shù)類型(short int long)的存儲方式

    談?wù)凧ava中整數(shù)類型(short int long)的存儲方式

    在java中的整數(shù)類型有四種,分別是byte short in long,本文重點給大家介紹java中的整數(shù)類型(short int long),由于byte只是一個字節(jié)0或1,在此就不多說了,對java中的整數(shù)類型感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11

最新評論

长葛市| 乌拉特前旗| 即墨市| 金堂县| 保康县| 饶河县| 桃源县| 普兰店市| 永川市| 海城市| 台北市| 无极县| 望奎县| 潼南县| 崇阳县| 台北市| 锦州市| 登封市| 西昌市| 正阳县| 阳东县| 武安市| 芜湖县| 抚宁县| 香港 | 房产| 延安市| 怀安县| 化德县| 长沙市| 唐河县| 西充县| 建宁县| 利辛县| 安乡县| 河源市| 九江市| 拉萨市| 大英县| 南澳县| 伊川县|