有参构造器进行创建对象并赋值
在实体类中构造一个有参构造器:
public class Person {
private String lastname;
private Integer age;
private String gender;
private String email;
public Person(String lastname, Integer age, String gender, String email) {
super();
this.lastname = lastname;
this.age = age;
this.gender = gender;
this.email = email;
System.out.println("有参构造器调用。。。");
}
}
在xml中配置,调用的标签是:
<constructor-arg name=“” value=“”></constructor-arg>
<bean id="person03" class="com.guigu.bean.Person">
<!-- 调用有参构造器进行创建对象并赋值 -->
<!-- public Person(String lastname, Integer age, String gender, String email) -->
<constructor-arg name="lastname" value="小狗"></constructor-arg>
<constructor-arg name="age" value="6"></constructor-arg>
<constructor-arg name="email" value="xiaogou@qq.com"></constructor-arg>
<constructor-arg name="gender" value="雄性"></constructor-arg>
</bean>
还可以省略name属性,但是顺序必须严格按照有参构造器的顺序,如果顺序反了还可以通过index(索引)来纠正,index是从0开始
<bean id = "person04" class="com.guigu.bean.Person">
<constructor-arg value="小狗"></constructor-arg>
<constructor-arg value="6"></constructor-arg>
<constructor-arg value="雄性" index=2></constructor-arg>
<constructor-arg value="xiaogou@qq.com" index = 3></constructor-arg>
</bean>
还有一种情况:就是省略name的情况下,实体类里刚好有两个重载的有参构造,两个有参构造的参数的数量都是一样的,通过ioc容器赋值,到底赋值给哪个有参构造函数不好说。可以通过type定义类型进行区别,就不会乱了
使用P标签的名称空间
步骤:1、导入名称空间:在xml文件中的NameSpaces中勾选P
2、使用
<bean id="person05" class="com.guigu.bean.Person" p:lastname="小猫" p:age="5" p:email="xiaomao@qq.com" p:gender="母">
</bean>