国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

Spring中IoC的詳細介紹

發(fā)布時(shí)間:2021-09-14 18:13 來(lái)源:億速云 閱讀:0 作者:chen 欄目: 服務(wù)器 歡迎投稿:712375056

這篇文章主要講解了“Spring中IoC的詳細介紹”,文中的講解內容簡(jiǎn)單清晰,易于學(xué)習與理解,下面請大家跟著(zhù)小編的思路慢慢深入,一起來(lái)研究和學(xué)習“Spring中IoC的詳細介紹”吧!

Spring中的IoC:

1)概念:把對象的創(chuàng  )建、初始化、銷(xiāo)毀等工作交給spring容器來(lái)做。由spring容器控制對象的生命周期。
2)目的:為了解決多個(gè)對象之間的依賴(lài)關(guān)系。
3)原理:
	1)通過(guò)配置文件(或注解)的方式來(lái)描述bean與bean之間的依賴(lài)關(guān)系。
	2)通過(guò)動(dòng)態(tài)代理和java的反射機制來(lái)實(shí)例化bean,同時(shí)建立bean之間的依賴(lài)關(guān)系。
	
4)spring容器創(chuàng  )建對象的3種方式(bean的實(shí)例化):

	1)使用Spring的IoC創(chuàng  )建對象:調用默認的構造函數(默認)
		1>指定bean的class屬性
		2>class需要一個(gè)默認的空構造器
		
		<bean id="helloWorld" class="com.jxn.HelloWorld" />
		
		得到實(shí)例對象:HelloWorld helloWorld = (HelloWorld)context.getBean("helloWorld");
	
	
	2)在Spring中使用工廠(chǎng)模式創(chuàng  )建對象:
	
		使用靜態(tài)工廠(chǎng)方法
			1>指定class屬性外
			2>通過(guò)factory-method屬性來(lái)指定創(chuàng  )建bean實(shí)例的靜態(tài)工廠(chǎng)方法
			
			<bean id="helloWorld" class="com.jxn.HelloWorldFactory" factory-method="createInstance"></bean>
			注:相當于調用了 HelloWorldFactory.createInstance();
			
			public class HelloWorldFactory {
				public static HelloWorld createInstance(){
					return new HelloWorld();
				}
			}
			
			得到實(shí)例對象:HelloWorld helloWorld = (HelloWorld)context.getBean("helloWorld");

		使用實(shí)例工廠(chǎng)方法
			1>定義一個(gè)工廠(chǎng)類(lèi)
			2>通過(guò)factory-bean屬性指定工廠(chǎng)類(lèi),通過(guò)factory-method屬性指定該工廠(chǎng)類(lèi)的非靜態(tài)工廠(chǎng)方法

			<bean id="helloWorldFactory" class="com.jxn.HelloWorldFactory" />
			<bean id="HelloWorld" factory-bean="helloWorldFactory" factory-method="createInstance" />
			注:相當于調用了 new HelloWorldFactory.createInstance();
			
			public class HelloWorldFactory {
				public HelloWorld createInstance(){
					return new HelloWorld();
				}
			}
			
			得到實(shí)例對象:HelloWorld helloWorld = (HelloWorld)context.getBean("helloWorld");
		

	3)使用Spring的IoC創(chuàng  )建對象 VS 使用工廠(chǎng)模式創(chuàng  )建對象

		當創(chuàng  )建的對象需要修改(eg:新增屬性)時(shí):
			Spring的IoC只需要修改對象對應的類(lèi)即可。
			工廠(chǎng)模式需要修改或添加工廠(chǎng)方法。


5)DI(依賴(lài)注入):給對象的屬性賦值

	1)使用屬性的setter方法進(jìn)行注入:
	
		說(shuō)明:通過(guò)調用無(wú)參構造器或無(wú)參static工廠(chǎng)方法實(shí)例化bean之后,調用該bean的setter方法,即可實(shí)現基于setter的依賴(lài)注入。
		舉例:
			<!-- property是用來(lái)描述一個(gè)類(lèi)的屬性:直接變量(基本類(lèi)型、String類(lèi)型等)用value賦值,引用類(lèi)型用ref賦值 --> 
			<bean id="student" class="com.jxn.domain.Student" />
			<bean id="person" class="com.jxn.domain.Person">
				
				<!-- 直接變量 -->
				<property name="name" value="aaa" />
				<!-- 引用類(lèi)型 -->
				<property name="student" ref="student">
				
				<!-- List -->
				<property name="lists">
					<list>
						<value>list1</value>
						<ref bean="student"/>
						<value>list3</value>
					</list>
				</property>

				<!-- Map -->
				<property name="map">
					<map>
						<entry key="m1">
							<value>map1</value>
						</entry>
						<entry key="m2">
							<ref bean="student"/>
						</entry>
					</map>
				</property>
				
				<!-- Properties -->
				<property name="properties">
					<props>
						<prop key="key1">value1</prop>
						<prop key="key2">value2</prop>
					</props>
				</property>
			
			</bean>
	
	2)使用構造器注入:通過(guò)調用帶參數的構造器來(lái)實(shí)現:
	
		說(shuō)明:
			1>如果spring的配置文件的bean中沒(méi)有<constructor-arg>標簽,則調用默認的構造方法
			2>如果spring的配置文件的bean中有<constructor-arg>標簽,則該元素確定唯一的構造方法,該標簽的屬性
				index  指參數的位置,從0開(kāi)始
				type   指參數的類(lèi)型,如果不寫(xiě)仍可確定唯一的構造方法,則可以省略type屬性
				value  給基本類(lèi)型賦值
				ref    給引用類(lèi)型賦值
		舉例:
			<bean id="person" class="com.jxn.domain.Person">
				<constructor-arg index="0" type="java.lang.Long" value="1"></constructor-arg>
				<constructor-arg index="1" value="zhangsan"></constructor-arg>
				<constructor-arg index="2" ref="student"></constructor-arg>
			</bean>
			
			<bean id="student" class="com.jxn.domain.Student" />


??

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

亚洲一成人高清一区二区三区| 久久精品一区二区三区中文字幕| 曰批免费视频播放免费| 高潮喷水的网站| 久久99热精品免费观看| 国产精品导航一区二区|