无参构造
使用无参构造创建对象,默认
实体类
public class User {
private String name;
public User() {
System.out.println("User无参构造方法");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void show() {
System.out.println("name=" + this.name);
}
}
beans.xml
<bean id="user" class="com.yuan.pojo.User">
<property name="name" value="古三少"/>
</bean>
测试
public class MyTest {
@Test
public void test(){
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
User user = (User) context.getBean("user");
user.show();
}
}
结果我们可以发现,在调用show()方法之前,User对象已经通过无参构造初始化了
有参构造
使用有参构造创建对象
实体类
public class User {
private String name;
public User(String name) {
this.name = name;
System.out.println("User构造方法给name赋值"+this.name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void show() {
System.out.println("name=" + this.name);
}
}
第一种方法:下标赋值
<bean id="user1" class="com.yuan.pojo.User">
<constructor-arg index="0" value="十九少"/>
</bean>
第二中方法:通过类型创建,不建议使用!因为假如里面有2个String就不行了
<bean id="user2" class="com.yuan.pojo.User">
<constructor-arg type="java.lang.String" value="古少"/>
</bean>
第三种方法:直接通过参数名来设置
<bean id="user3" class="com.yuan.pojo.User">
<constructor-arg name="name" value="小古"/>
</bean>
小结:在配置文件加载的时候,容器中管理的对象就已经初始化了(以下图为例)