Spring的核心之IoC容器創建對象


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~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM