A类
package cn.et.lesson01hello;
public class A {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
B类
package cn.et.lesson01hello;
public class B {
private A a;
public A getA() {
return a;
}
public void setA(A a) {
this.a = a;
}
}
一、<!-- 属性注入 两种方法赋值--> spring.xml
第一种
<bean id="a" class="cn.et.lesson01ioc_di.A">
<property name="name" value="zs"></property>
</bean>
第二种
<bean id="a1" class="cn.et.lesson01ioc_di.A">
<property name="name">
<value>fff</value>
</property>
</bean>
引入对象 ref
第一种
<bean id="b" class="cn.et.lesson01ioc_di.B">
<property name="a" ref="a"></property>
</bean>
第二种
<bean id="b1" class="cn.et.lesson01ioc_di.B">
<property name="a">
<ref bean="a1"/>
</property>
</bean>
二、<!-- 构造器注入 三种方式 --> spring.xml
<!-- 根据索引赋值 -->
<bean id="c" class="cn.et.lesson01ioc_di.C">
<constructor-arg index="0" value="1"></constructor-arg>
<constructor-arg index="1" value="ls"></constructor-arg>
<constructor-arg index="2" ref="b"></constructor-arg>
</bean>
<!-- 根据类型赋值 -->
<bean id="c" class="cn.et.lesson01ioc_di.C">
<constructor-arg type="java.lang.String" value="1"></constructor-arg>
<constructor-arg type="java.lang.String" value="ls"></constructor-arg>
<constructor-arg type="cn.et.lesson01ioc_di.B" ref="b"></constructor-arg>
</bean>
<!-- 根据属性名赋值 -->
<bean id="c" class="cn.et.lesson01ioc_di.C">
<constructor-arg name="id" value="1"></constructor-arg>
<constructor-arg name="name" value="ls"></constructor-arg>
<constructor-arg name="b" ref="b"></constructor-arg>
</bean>
如果是没有给定id的名称 默认的名字是==类名#编号
<bean class="cn.et.lesson01hello.B"></bean>
cn.et.lesson01hello.B#0