Spring学习之—Spring IOC创建对象的三种方式

wuchangjian2021-11-02 11:09:02编程学习

1. 使用无参构造函数创建对象

核心配置文件applicationContext.xml中添加如下内容:

 <bean id="us1" class="com.zzz.pojo.User"/>

2. 使用有参构造函数创建对象

核心配置文件applicationContext.xml中添加如下内容:

        <!--使用有参构造创建对象-->
        <bean id="us2" class="com.zzz.pojo.User">

                <!--name与构造方法参数名相同,而不是属性名-->
<!--                <constructor-arg name = "uid" value = "222" />-->
<!--                <constructor-arg name = "uname" value = "zzz"/>-->
<!--                <constructor-arg name = "uage" value= "12"/>-->
<!--                <constructor-arg name = "usex" value = "男"/>-->

                <!--index 下标从0开始,对应构造方法中的参数下标-->
                <constructor-arg index = "0" value = "222" />
                <constructor-arg index = "1" value = "zzz"/>
                <constructor-arg index = "2" value= "12"/>
                <constructor-arg index = "3" value = ""/>

                <!--
                type 一般不用
                value 一般为简单类型赋值
                ref 为引用数据类型赋值
                -->

        </bean>

3. 使用工厂模式创建对象

方案一:使用实例工厂 + 无参
  1. 准备一个工厂类

目录:springboot\spring01\src\main\java\com\zzz\factory\UserFactory.java

package com.zzz.factory;

import com.zzz.pojo.User;

public class UserFactory {

    public User getInstance(){

        return new User(123,"丽丽",30,"女");
    }
}

  1. 核心配置文件添加:
      <!-- 使用工厂模式 创建对象
             1. 创建工厂对象
             2. 根据工厂对象,创建User对象
         -->

        <bean id="factory" class="com.zzz.factory.UserFactory"/>
        <bean id="us3" factory-bean="factory" factory-method="getInstance"/>
方案二:使用静态工厂 + 无参
  1. 准备一个工厂类

目录:springboot\spring01\src\main\java\com\zzz\factory\UserFactory.java

package com.zzz.factory;

import com.zzz.pojo.User;

public class UserFactory {

    public static User getInstance(){

        return new User(123,"丽丽",30,"女");
    }
}

  1. 核心配置文件添加:
    <!--使用静态工厂模式-->
        <bean id="us4" class="com.zzz.factory.UserFactory" factory-method="getInstance"/>
方案三:使用实例工厂 + 有参
  1. 准备一个工厂类

目录:springboot\spring01\src\main\java\com\zzz\factory\UserFactory.java

package com.zzz.factory;

import com.zzz.pojo.User;

public class UserFactory {

    public User getInstance(User user){

        return user;
    }
}

  1. 核心配置文件添加:
		<bean id="us1" class="com.zzz.pojo.User"/>
    	<!--使用实例工厂类 +有参-->
        <bean id="factory" class="com.zzz.factory.UserFactory"/>
        <bean id="us5" factory-bean="factory" factory-method="getInstance">
                <constructor-arg name="user" ref="us1"></constructor-arg>
        </bean>
方案四:使用静态工厂 + 有参
  1. 准备一个工厂类

目录:springboot\spring01\src\main\java\com\zzz\factory\UserFactory.java

package com.zzz.factory;

import com.zzz.pojo.User;

public class UserFactory {

    public static User getInstance(User user){

        return user;
    }
}

  1. 核心配置文件添加:
		<bean id="us1" class="com.zzz.pojo.User"/>
     	<!--使用静态工厂类 +有参-->
        <bean id="us6" class="com.zzz.factory.UserFactory" factory-method="getInstance">
                <constructor-arg name="user" ref="us1"></constructor-arg>
        </bean>

相关文章

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。