我选了一个bean类,在这个类中我选了一个内部bean。我已经在配置文件中配置了它们。但是,当我尝试运行Java应用程序时,抛出了异常消息:“在类路径资源[spconfig.xml]中创建名称为'id1'的bean时出错:设置属性值时出错;嵌套的异常是org.springframework.beans .NotWritablePropertyException:Bean类[SampleBean]的无效属性'db':Bean属性'db'不可写或具有无效的setter方法。您是说'DB'吗?”为什么我不欢迎使用内部bean?该怎么办?
在配置文件中正确定义了属性。
SampleBean.java
public class SampleBean {
private DemoBean db;
public void setDB(DemoBean db) {
this.db=db;
}
public void show() {
db.m1();
}
}
DemoBean.java
public class DemoBean {
public void m1() {
System.out.println("Welcome to inner bean");
}
}
spconfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="id1" class = "SampleBean">
<property name="db">
<bean class = "DemoBean"/>
</property>
</bean>
</beans>
Client.java
import org.springframework.beans.factory.*;
import org.springframework.beans.factory.xml.*;
import org.springframework.core.io.*;
public class Client {
public static void main(String[] args) {
Resource res = new ClassPathResource("spconfig.xml");
@SuppressWarnings("deprecation")
BeanFactory factory = new XmlBeanFactory(res);
Object o = factory.getBean("id1");
SampleBean sb = (SampleBean)o;
sb.show();
}
}
答案 0 :(得分:0)
Spring使用JavaBeans naming convention。
带有
之类的字段private DemoBean db;
和类似
的声明<property name="db">
Spring需要一个名为setDb
的二传手,而不是您代码中的setDB
。将其更改为setDb
,您的main
方法将正确打印
Welcome to inner bean