您好,登錄后才能下訂單哦!
這篇文章主要講解了“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的詳細介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。