我参加了一个 bean 课程,在这个课程中我学习了一个内部 bean。我已经在配置文件中配置了它们。但是当我尝试运行我的 Java 应用程序时,它抛出异常说“在类路径资源 [spconfig.xml] 中定义名称为 'id1' 的 bean 创建错误:设置属性值时出错;嵌套异常是 org.springframework.beans .NotWritablePropertyException:bean 类 [SampleBean] 的无效属性 'db':Bean 属性 'db' 不可写或具有无效的 setter 方法。您的意思是 'DB'?为什么我不欢迎内豆?该怎么办?在配置文件中正确定义的属性。SampleBean.javapublic class SampleBean { private DemoBean db; public void setDB(DemoBean db) { this.db=db; } public void show() { db.m1(); }}DemoBean.javapublic 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.javaimport 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 回答
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
Spring 使用JavaBeans 命名约定。
有一个像
private DemoBean db;
和像这样的声明
<property name="db">
Spring 需要一个名为 的 setter setDb
,这setDB
与您的代码中的不同。将其更改为setDb
,您的main
方法将正确打印
Welcome to inner bean
添加回答
举报
0/150
提交
取消