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

  • 相关阅读:
    MS CRM 2011的自定义和开发(10)——CRM web服务介绍(第一部分)——IDiscoveryService
    MS CRM 2011的自定义和开发(7)——视图编辑器(第二部分)
    MS CRM 2011 SDK 5.06版本已经发布
    MS CRM 2011的自定义和开发(11)——插件(plugin)开发(一)
    近来遇到的MS CRM 2011方面的几个问题
    MS CRM 2011的自定义与开发(6)——表单编辑器(第二部分)
    Microsoft Dynamics CRM 2011中,Lookup字段的赋值
    MS CRM 2011的自定义和开发(6)——表单编辑器(第三部分)
    Visual Studio 目标框架造成 命名空间“Microsoft”中不存在类型或命名空间名称“Crm”。是否缺少程序集引用中错误的处理
    一步步学习Reporting Services(二) 在报表中使用简单的参数作为查询条件
  • 原文地址:https://www.cnblogs.com/biehongli/p/6539450.html
Copyright © 2020-2023  润新知