当前位置: 首页 > 知识库问答 >
问题:

如何修复“使用类路径资源中定义的名称创建bean时出错”?

赫连华皓
2023-03-14

我学习了一个bean类,在这个类中我学习了一个内部bean。我已经在配置文件中配置了它们。但当我试图运行Java应用程序时,它会抛出异常,说“创建名为'id1'的bean时出错,该bean在类路径资源[spconfig.xml]中定义]:设置属性值时出错;嵌套异常是org.springframework.beans.NotWritablePropertyException:bean类[SampleBean]的无效属性'db':Bean属性“db”不可写或具有无效的setter方法。你是说“DB”吗?“为什么我不欢迎来到内豆?怎么办?

在配置文件中正确定义了属性。

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();
    }

}


共有1个答案

曹乐意
2023-03-14

Spring使用JavaBeans命名约定。

带着一种野性

private DemoBean db;

像这样的声明

<property name="db">

Spring需要一个名为setDb的setter,而不是代码中的setDb。将其更改为setDb,您的main方法将正确打印

Welcome to inner bean
 类似资料: