Spring创建对象的三种方式
1.实体类
public class Person {
private String name;
private int age;
private String sex;
public Person() {
super();
System.out.println("调用无参数的构造器");
}
public Person(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
System.out.println("调用有参数的构造器");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
方法一: 调用无参的构造器
<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">
<!-- 1.默认无参构造函数 -->
<bean id="person01" class="bean.Person"></bean>
Person person01 = (Person) context.getBean("person01");
System.out.println(person01);
2. 方法二:调用有参的构造器
<!-- 2.有参的构造函数创建对象 -->
<bean id="person02" class="bean.Person">
<constructor-arg index="1" type="int" value="18"></constructor-arg>
<constructor-arg index="0" type="java.lang.String" value="张三"></constructor-arg>
<constructor-arg index="2" type="java.lang.String" value="男"></constructor-arg>
</bean>
Person person02 = (Person) context.getBean("person02");
System.out.println(person02);
3. 方法三:使用静态工厂方法实例化(简单工厂模式),使用实例工厂方法实例化(工厂方法模式):
实例工厂
<!-- 3.实例工厂创建对象 -->
<bean id="factory" class="bean.Factory"></bean>
<bean id="person03" factory-bean="factory" factory-method="person03"></bean>
Person person03 = (Person) context.getBean("person03");
System.out.println(person03);
静态工厂创建对象
<!-- 静态工厂创建对象 -->
<bean id="person04" class="bean.Factory" factory-method="person04"></bean>
Person person04 = (Person) context.getBean("person04");
System.out.println(person04);
,