91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring中IoC的詳細介紹

發布時間:2021-09-10 16:35:22 來源:億速云 閱讀:126 作者:chen 欄目:云計算

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

Spring中的IoC:

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

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

		使用實例工廠方法
			1>定義一個工廠類
			2>通過factory-bean屬性指定工廠類,通過factory-method屬性指定該工廠類的非靜態工廠方法

			<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();
				}
			}
			
			得到實例對象:HelloWorld helloWorld = (HelloWorld)context.getBean("helloWorld");
		

	3)使用Spring的IoC創建對象 VS 使用工廠模式創建對象

		當創建的對象需要修改(eg:新增屬性)時:
			Spring的IoC只需要修改對象對應的類即可。
			工廠模式需要修改或添加工廠方法。


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

	1)使用屬性的setter方法進行注入:
	
		說明:通過調用無參構造器或無參static工廠方法實例化bean之后,調用該bean的setter方法,即可實現基于setter的依賴注入。
		舉例:
			<!-- property是用來描述一個類的屬性:直接變量(基本類型、String類型等)用value賦值,引用類型用ref賦值 --> 
			<bean id="student" class="com.jxn.domain.Student" />
			<bean id="person" class="com.jxn.domain.Person">
				
				<!-- 直接變量 -->
				<property name="name" value="aaa" />
				<!-- 引用類型 -->
				<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)使用構造器注入:通過調用帶參數的構造器來實現:
	
		說明:
			1>如果spring的配置文件的bean中沒有<constructor-arg>標簽,則調用默認的構造方法
			2>如果spring的配置文件的bean中有<constructor-arg>標簽,則該元素確定唯一的構造方法,該標簽的屬性
				index  指參數的位置,從0開始
				type   指參數的類型,如果不寫仍可確定唯一的構造方法,則可以省略type屬性
				value  給基本類型賦值
				ref    給引用類型賦值
		舉例:
			<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" />


??

感謝各位的閱讀,以上就是“Spring中IoC的詳細介紹”的內容了,經過本文的學習后,相信大家對Spring中IoC的詳細介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

读书| 陆丰市| 靖西县| 宜川县| 沙坪坝区| 康定县| 高青县| 桓仁| 二连浩特市| 策勒县| 龙门县| 共和县| 南皮县| 吴江市| 娄底市| 富民县| 天津市| 新巴尔虎右旗| 九台市| 凤阳县| 华容县| 无棣县| 遵义县| 乐业县| 肃北| 怀柔区| 浑源县| 杂多县| 菏泽市| 清徐县| 岑溪市| 奈曼旗| 芦山县| 南和县| 靖远县| 宾阳县| 清河县| 成都市| 南木林县| 汝州市| 常德市|