zoukankan      html  css  js  c++  java
  • spring学习 四 对象的创建

    spring中,有三种创建对象的方式

    (1)构造创建

    (2)实例工厂构造

    (3)静态工厂构造

    一  构造器创建

    在构造器创建对象时,有无参构造和有参构造 两种

    (1)在spring中,默认的是无参构造,在applicationContext.xml配置如下,此时com.spring.pojo.People必须有无参构造器,无论是java语言提供的,还是用户自定义的

        <!-- 
                id属性的值就是对象在当前容器下的唯一的标识
                class属性的值,就是对象对应的类
           
    --> <bean id="peo" class="com.spring.pojo.People"> </bean>

    (2)有参构造,此时用户必须提供有参构造器,

    <!-- 
                 有参构造:
                 (1)  <constructor-arg></constructor-arg>标签的个数  等于  构造器参数的个数
                 (2) 当有多个有参构造器重载时,可以通过<constructor-arg></constructor-arg>标签
                     中的index,name,type来 确切的指定要调用哪一个构造器,如果没有确切的指定,则调用类里面
                     最后一个匹配的最后一个构造器
                 () 构造时,注入的值,如果是基本类型或String,在<constructor-arg>中使用value属性,
                     如果是其他的类类型,则用ref进行注入
                     
              -->     
            <bean id="peo" class="com.spring.pojo.People">
                <!-- 
                    (1)constructor-arg标签的个数代表构造器中参数的个数,本例中有两个,代表会调用有两个
                        参数的构造器
                    (2)index的值是构造器中参数的索引位置,从0开始
                    
                    (3) ref 是引用另外一个bean ,value用来引用基本类型或者String类型的
                 -->
                <constructor-arg index="0" value="1"></constructor-arg>
                <constructor-arg index="1" value="zhangsan"></constructor-arg>
            </bean>
            
            <bean id="peo2" class="com.spring.pojo.People">
                <!-- 
                    (1)constructor-arg标签的个数代表构造器中参数的个数,本例中有两个,代表会调用有两个
                        参数的构造器
                    (2)name属性的值,就是构造函数的参数的形参的名称,在本例中会调用
                        public People(int argid, String argname)构造器,
                        
                        但是如果定义了public People(String argname,int argid),这个构造器也是可匹配的
                 -->
                <constructor-arg name="argid" value="1"></constructor-arg>
                <constructor-arg name="argname" value="wangwu"></constructor-arg>
            </bean>
            
             <bean id="peo3" class="com.spring.pojo.People">
                <!-- 
                    调用只有一个参数的构造器,且参数名称为argname
                 -->
                <constructor-arg name="argname" value="赵六"></constructor-arg>
            </bean>

      (二)实例工厂构造

      就是bean的创建是由实例工厂的方法来创建,使用实例工厂,实现要实例化实例工厂,然后调用实例工厂中的创建对象的方法。

    配置如下:

     <!-- 实例化 实例工厂 -->
            <bean id="instanceFactory" class="com.spring.factory.PeopleFactory"></bean>
            <bean id="peo4" factory-bean="instanceFactory" factory-method="newInstance">
            </bean>
    public class PeopleFactory {
        public People newInstance() {
            return new People();
        }
    }

    (三)静态工厂

    使用静态工厂进行构造,不用像实例工厂先实例化工厂,直接用类调用一个static的创建对象的方法

    public class PeopleFactory {
        public static People newInstance() {
            return new People();
        }
    }

    配置如下:

    <bean id="peo4" class="com.spring.factory.PeopleFactory" factory-method="newInstance">
            </bean>
  • 相关阅读:
    linux7系统进入单用户模式
    GoAccess日志分析工具
    yum总结
    分布式文件系统---GlusterFS
    【centos7】添加开机启动服务/脚本
    centos 7 服务初始化
    chrony软件
    [USACO4.1]麦香牛块Beef McNuggets 题解报告
    组合数的几种计算方法
    【ZJOI2005】沼泽鳄鱼 题解报告
  • 原文地址:https://www.cnblogs.com/cplinux/p/9734962.html
Copyright © 2011-2022 走看看