Spring的Ioc容器,是Spring的核心內容:
作用:對象的創建和處理對象的依賴關系。
Spring容器創建對象有以下幾種方式:
1:調用無參數的構造器
<!-- 默認無參的構造器 -->
<bean id="user1" class="com.bie.po.User"></bean>
2:調用有參數構造器
<!-- 帶參的構造器 ,基本數據類型直接寫如int,引用數據類型寫全名如java.lang.String-->
<bean id="user" class="com.bie.po.User">
<constructor-arg value="100" index="0" type="int"></constructor-arg>
<constructor-arg value="張三" index="1" type="java.lang.String"></constructor-arg>
</bean>
在Spring中通過配置文件使用ref元素引用其他JavaBean的實例對象
<!-- 定義一個字符串,值是'張三';String str=new String("張三"); -->
<bean id="str" class="java.lang.String">
<constructor-arg value="張三"></constructor-arg>
</bean>
<!-- 帶參的構造器 ,基本數據類型直接寫如int,引用數據類型寫全名如java.lang.String-->
<bean id="user" class="com.bie.po.User">
<constructor-arg value="100" index="0" type="int"></constructor-arg>
<constructor-arg ref="str" index="1" type="java.lang.String"></constructor-arg>
</bean>
完整的applicationContext.xml(bean.xml)配置文件如下所示:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:p="http://www.springframework.org/schema/p" 5 xmlns:context="http://www.springframework.org/schema/context" 6 xsi:schemaLocation=" 7 http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans.xsd 9 http://www.springframework.org/schema/context 10 http://www.springframework.org/schema/context/spring-context.xsd"> 11 12 13 <!-- IoC容器的配置,要創建的所有的對象都配置在這里 --> 14 15 <!-- 默認無參的構造器 --> 16 <bean id="user1" class="com.bie.po.User"></bean> 17 18 <!-- 定義一個字符串,值是'張三';String str=new String("張三"); --> 19 <bean id="str" class="java.lang.String"> 20 <constructor-arg value="張三"></constructor-arg> 21 </bean> 22 23 <!-- 帶參的構造器 ,基本數據類型直接寫如int,引用數據類型寫全名如java.lang.String--> 24 <bean id="user" class="com.bie.po.User"> 25 <constructor-arg value="100" index="0" type="int"></constructor-arg> 26 <!-- <constructor-arg value="張三" index="1" type="java.lang.String"></constructor-arg> 27 --> 28 <constructor-arg ref="str" index="1" type="java.lang.String"></constructor-arg> 29 30 </bean> 31 </beans>
3:工廠類創建對象
3.1:工廠類,靜態方法創建對象
<!-- 3:工廠類創建對象
工廠類,實例方法,必須先創建工廠
再創建user對象,用factory的實例方法
-->
<bean id="factory" class="com.bie.po.ObjectFactory"></bean>
<bean id="user3" factory-bean="factory" factory-method="getInstance"></bean>
3.2:工廠類,非靜態方法創建對象
<!--
4:工廠類,靜態方法,靜態方法不需要實例化對象,
class指定的就是工廠類型
factory-method一定是工廠里面的靜態方法
--><bean id="user" class="com.bie.po.ObjectFactory" factory-method="getStaticInstance"></bean>
完整的applicationContext.xml(bean.xml)配置文件如下所示:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:p="http://www.springframework.org/schema/p" 5 xmlns:context="http://www.springframework.org/schema/context" 6 xsi:schemaLocation=" 7 http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans.xsd 9 http://www.springframework.org/schema/context 10 http://www.springframework.org/schema/context/spring-context.xsd"> 11 12 13 <!-- IoC容器的配置,要創建的所有的對象都配置在這里 --> 14 15 <!-- 默認無參的構造器 --> 16 <bean id="user1" class="com.bie.po.User"></bean> 17 18 <!-- 定義一個字符串,值是'張三';String str=new String("張三"); --> 19 <bean id="str" class="java.lang.String"> 20 <constructor-arg value="張三"></constructor-arg> 21 </bean> 22 23 <!-- 帶參的構造器 ,基本數據類型直接寫如int,引用數據類型寫全名如java.lang.String--> 24 <bean id="user2" class="com.bie.po.User"> 25 <constructor-arg value="100" index="0" type="int"></constructor-arg> 26 <!-- <constructor-arg value="張三" index="1" type="java.lang.String"></constructor-arg> 27 --> 28 <constructor-arg ref="str" index="1" type="java.lang.String"></constructor-arg> 29 </bean> 30 31 <!-- 3:工廠類創建對象 32 工廠類,實例方法,必須先創建工廠 33 再創建user對象,用factory的實例方法 34 --> 35 <bean id="factory" class="com.bie.po.ObjectFactory"></bean> 36 <bean id="user3" factory-bean="factory" factory-method="getInstance"></bean> 37 38 <!-- 4:工廠類,靜態方法,靜態方法不需要實例化對象,所以直接引用工廠類的class和方法 --> 39 <bean id="user" class="com.bie.po.ObjectFactory" factory-method="getStaticInstance"></bean> 40 </beans>
掌握Spring核心IoC容器,由簡到繁,faghting~~~
