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)