Spring容器创建对象的方式

Spring容器创建对象的方式

1、 使用默认的构造方法

Team.java类中添加不带参数构造方法

public Team() {
        System.out.println("Team-默认的构造方法 id="+id+" ,name="+name+" ,location="+location);

    }

配置文件application.xml 添加bean标签

<bean id="team1" class="com.daw.pojo.Team"></bean>

2、 使用带参数的构造方法

Team.java类中添加带参数构造方法:

public Team(Integer id, String name, String location) {
	this.id = id;
	this.name = name;
	this.location = location;
	System.out.println("Team - 带参数的构造方法
	id="+id+",name="+name+",location="+location);
}

创建新的配置文件createType.xml

<!-- 2、通过带参数的构造方法-->
<bean id="team2" class="com.kbb.pojo.Team">
	<!--name:表示参数的名称-->
	<constructor-arg name="id" value="1001"/>
	<constructor-arg name="name" value="勇士"/>
	<constructor-arg name="location" value="金州"/>
</bean>
<bean id="team3" class="com.kbb.pojo.Team">
	<!--index:表示参数的下标索引-->
	<constructor-arg index="0" value="1002"/>
	<constructor-arg index="1" value="热火"/>
	<constructor-arg index="2" value="迈阿密"/>
</bean>

3、 使用工厂类

创建工厂类:

package com.daw.pojo;

/**
 * DAW
 * MyFactory
 * 又不是不能用!
 */
public class MyFactory {
    /**
     * 实例方法
     * @return
     */
    public  Team instanceFun(){
        System.out.println("MyFactory-----实例");
        return new Team(1003,"热火","迈阿密");
    }

    /**
     * 静态方法
     * @return
     */
    public static Team staticFun(){
        System.out.println("MyFactory-----静态");
        return new Team(1004,"小牛","达拉斯");
    }

    public static void main(String[] args) {
        Team team1 = MyFactory.staticFun();
        MyFactory myFactory = new MyFactory();
        Team team = myFactory.instanceFun();
    }
}

配置createType.xml的bean标签

<!--3、通过工厂方法:
3.1 静态方法
Team team1 = MyFactory.staticFun();-->
<bean id="staticTeam" class="com.kbb.pojo.MyFactory" factorymethod="staticFun"></bean>
<!--3、通过工厂方法:
3.2 实例方法
MyFactory factory=new MyFactory();
Team team = factory.instanceFun();-->
<bean id="factory" class="com.kbb.pojo.MyFactory"></bean>
<bean id="instanceTeam" factory-bean="factory" factory-method="instanceFun">
</bean>

createType.xml总括

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--spring容器创建对象的方式
        1、通过默认构造方法
        2、通过带参数的构造方法
        3、通过工厂方法 实例方法  静态方法-->
    <!--1、通过默认的构造方法 -->
    <bean id="team1" class="com.daw.pojo.Team"></bean>
    <!--2、通过带参数的构造方法 -->
    <bean id="team2" class="com.daw.pojo.Team">
        <constructor-arg name="id" value="1001"></constructor-arg>
        <constructor-arg name="name" value="勇士"></constructor-arg>
        <constructor-arg name="location" value="金州"></constructor-arg>
    </bean>

    <bean id="team3" class="com.daw.pojo.Team">
    <constructor-arg index="0" value="1002"></constructor-arg>
    <constructor-arg index="1" value="湖人"></constructor-arg>
    <constructor-arg index="2" value="洛杉矶"></constructor-arg>
    </bean>

    <!--3、通过工厂方法
     3.1 静态方法  Team team1 = MyFactory.staticFun();-->
<bean id="staticTeam" class="com.daw.pojo.MyFactory" factory-method="staticFun"></bean>
    <!--3、通过工厂方法
    3.2 实例方法
    MyFactory myFactory = new MyFactory();
    Team team = myFactory.instanceFun();-->
    <bean id="factory" class="com.daw.pojo.MyFactory"></bean>
    <bean id="intanceTeam" factory-bean="factory" factory-method="instanceFun"></bean>
</beans>

测试类:

package com.daw.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * DAW
 * createTypeTest
 * 又不是不能用!
 */
public class createTypeTest {
    @Test
    public void test01(){
        ApplicationContext ac = new ClassPathXmlApplicationContext("createType.xml");
    }
}

测试结果:

createTypeTest {
@Test
public void test01(){
ApplicationContext ac = new ClassPathXmlApplicationContext(“createType.xml”);
}
}


测试结果:

![在这里插入图片描述](https://img-blog.csdnimg.cn/2ff25d16168e49729fdbf699176ad616.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yREFX,size_16,color_FFFFFF,t_70)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值