猿问

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

我参加了一个 bean 课程,在这个课程中我学习了一个内部 bean。我已经在配置文件中配置了它们。但是当我尝试运行我的 Java 应用程序时,它抛出异常说“在类路径资源 [spconfig.xml] 中定义名称为 'id1' 的 bean 创建错误:设置属性值时出错;嵌套异常是 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();

    }


}


倚天杖
浏览 211回答 1
1回答

拉莫斯之舞

Spring 使用JavaBeans 命名约定。有一个像private&nbsp;DemoBean&nbsp;db;和像这样的声明<property&nbsp;name="db">Spring 需要一个名为 的 setter&nbsp;setDb,这setDB与您的代码中的不同。将其更改为setDb,您的main方法将正确打印Welcome&nbsp;to&nbsp;inner&nbsp;bean
随时随地看视频慕课网APP

相关分类

Java
我要回答