1.构造器注入
<bean name="product1" class="com.*.*.Product">
<constructor-arg index="0" value="name"/>
<constructor-arg index="1" value="9.95"/>
</bean>
对应的构造器为
public Product(String name, float price){...}
index的参数必须与构造器参数对应,基0.
2.默认无参构造器注入
<bean name="product2" class="com.*.*.Product"/>
对比第一种没有constructor-arg标签,故为默认无参构造器,类必须要有默认无参构造器,如果重载了构造器就必须加入显示的默认构造器。
3.setter方法注入
<bean name="user" class="com.*.*.User">
<property name="product1" ref="product1">
<property name="product2" ref="product2">
</bean>
ref为某个实例,通过setter注入,要注意的是用到的类getter和setter必须完善。被引用的对象的配置位置无关,可以在引用对象之后定义。
4.工厂方法注入
<bean name="product" class="com.*.*.Product"
factory-method="getInstance"/>
所有方式中可以加入destiry-method标签指定销毁方法
<bean name="product" class="com.*.*.Product"
factory-method="getInstance"
destory-method="shutdown"/>