项目场景:
Spring IoC入门
问题描述:
无法正确输出user的name属性public class User {
private String name;
public User(String name) {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void show(){
System.out.println("name="+name);
}
}
<?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">
<bean id="user" class="com.yc.pojo.User">
<property name="name" value="备哥"/>
</bean>
</beans>
public class MyTest {
public static void main(String[] args) {
// User user = new User();
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
User user = (User) context.getBean("user");
user.show();
}
}
原因分析:
Spring IoC创建对象的方式是通过无参构造函数构造对象
如果没写有参无参,用默认创建的无参,如果写了有参则会用有参构造函数去构造对象,产生错误
所以要么都写,要么都不写
解决方案:
写一个无参构造函数
或者采用有参函数能用的方法(换一种方法去写代码)如下:
<bean id="user" class="com.yc.pojo.User">
<constructor-arg index="0" value="备哥"/>
</bean>