我參加了一個 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
提交
取消