[[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、原组件引用新组件
3、配置新组件的 bean
4、在原组件的 bean 中引用新组件的 bean
这个操作在 IDEA 中有提示:
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来赋值