为什么ioc使用构造方法去创建对象
public class User {
private String name;
// 将无参数构造方法显式地写出来
public User(){
System.out.println("无参数构造方法执行。。。");
}
public void setName(String name){
this.name = name;
}
public void show(){
System.out.println("name:" + name);
}
}
beans.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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 无参数构造方法 -->
<bean id="user" class="com.ping.pojo.User">
<property name="name" value="小王"></property>
</bean>
</beans>
测试类:
package com.ping.dao;
import com.ping.pojo.User;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class UserTest {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new
ClassPathXmlApplicationContext("beans.xml");
User user = (User) context.getBean("user");
user.show();
System.out.println(user);
}
}
/* 运行结果:
无参数构造方法执行。。。
name:小王
com.ping.pojo.User@13805618
*/
结合上述运行结果和debug,可以发现,在调用show方法之前,User对象已经通过无参构造初始化
了!对象初始化之后,类里面方法属性都在对象里面
需要通过构造方法获得对象,
User user=(User) context.getbean("user");
对象可以调用类里面的属性,方法;
user.属性;
user.show();