Spring创建person Bean报错:无法解析对add Bean的引用
报错分析
报错信息:
Error creating bean with name 'person' defined in class path resource [config.xml]: Cannot resolve reference to bean 'add' while setting bean property 'address'
核心问题是Spring无法初始化ID为add的Address Bean,导致person Bean在引用它时找不到对应实例。具体原因是Address类中缺少city属性的setter方法——Spring的setter注入依赖对应属性的setter方法完成赋值,没有该方法时,Spring无法为Address Bean注入city属性,进而导致该Bean初始化失败。
解决步骤
- 为Address类添加
city属性的setter方法:
package com.lcwd.withoutboot; public class Address { String city; // 添加setter方法 public void setCity(String city) { this.city = city; } @Override public String toString() { return "Address{" + "city='" + city + '\'' + '}'; } }
验证配置文件路径
确保config.xml位于src/main/resources目录下,这样Maven编译后会将其放入classpath中,Spring的ClassPathXmlApplicationContext才能正确加载。重新编译运行
执行Maven编译命令mvn clean compile,然后运行App类,即可正常创建Bean并完成依赖注入。
补充说明
Spring XML配置里的<property>标签默认使用setter注入,要求目标类必须包含对应属性的setter方法,方法名需遵循JavaBean规范(即set+属性首字母大写,如setCity)。如果不想用setter注入,也可改用构造器注入,但需要在类中添加对应构造方法并修改XML配置。
内容的提问来源于stack exchange,提问作者user17788823

