[[toc]]
实验四 [重要]给bean的属性赋值:引用外部已声明的bean
1、声明新的组件类
public class HappyMachine {
private String machineName;public String getMachineName() {<br /> return machineName;<br /> }public void setMachineName(String machineName) {<br /> this.machineName = machineName;<br /> }<br />}
2、原组件引用新组件
![实验4 [重要]给bean的属性赋值:引用外部已声明的bean - 图1](/uploads/projects/zxystart@prsukn/22c07ee312181cb3288e82bf1528a6a3.png)
3、配置新组件的 bean
4、在原组件的 bean 中引用新组件的 bean
这个操作在 IDEA 中有提示:![实验4 [重要]给bean的属性赋值:引用外部已声明的bean - 图2](/uploads/projects/zxystart@prsukn/c376f0c69346c5cb0b3db17030a6caab.png)
5、测试
@Test
public void testExperiment04() {
HappyComponent happyComponent4 = (HappyComponent) iocContainer.getBean(“happyComponent4”);
HappyMachine happyMachine = happyComponent4.getHappyMachine();
String machineName = happyMachine.getMachineName();
System.out.println("machineName = " + machineName);<br />}
6、易错点
如果错把ref属性写成了value属性,会抛出异常: Caused by: java.lang.IllegalStateException: Cannot convert value of type ‘java.lang.String’ to required type ‘com.atguigu.ioc.component.HappyMachine’ for property ‘happyMachine’: no matching editors or conversion strategy found 意思是不能把String类型转换成我们要的HappyMachine类型 说明我们使用value属性时,Spring只把这个属性看做一个普通的字符串,不会认为这是一个bean的id,更不会根据它去找到bean来赋值
