1、构造函数注入:
构造函数的注入方式分为很多种
(1)普通构造函数,空参数的构造函数
<bean id="exampleBean" class="examples.ExampleBean"/>
(2)根据构造函数的参数顺序和个数
package com.my.bean; public class Foo { public Foo(Bar bar, Baz baz) {
// ...
}
}
<beans>
<bean id="foo" class="com.my.bean.Foo">
<constructor-arg ref="bar"/>
<constructor-arg ref="baz"/>
</bean> <bean id="bar" class="com.my.bean.Bar"/>
<bean id="baz" class="com.my.bean.Baz"/> </beans>
(3)根据构造函数的参数类型匹配
<bean id="exampleBean" class="examples.ExampleBean">
<constructor-arg type="int" value="7500000"/>
<constructor-arg type="java.lang.String" value="42"/>
<constructor-arg type="java.lang.Boolean" value="false"/>
</bean>
(4)根据构造函数的参数索引顺序和个数
<bean id="exampleBean" class="examples.ExampleBean">
<constructor-arg index="0" value="3000"/>
<constructor-arg index="1" value="42"/>
</bean>
(5)spring3以上还可以通过参数名称进行注入
<bean id="exampleBean" class="examples.ExampleBean">
<constructor-arg name="age" value="25"/>
<constructor-arg name="name" value="jerry"/>
</bean>
2、静态工厂方法注入
<bean id="clientService"
class="examples.ClientService"
factory-method="getInstance"/>
public class ClientService { public static ClientService getInstance() {
return new clientService();
}
}
3、实例化的工厂方法注入
public class MyServiceFactory { public MyServiceBean createMyServiceBean(){ return new MyServiceBean();
}
}
<bean id="myServiceFactory" class="com.my.bean.MyServiceFactory"></bean> <bean id="personService" factory-bean="myServiceFactory" factory-method="createMyServiceBean"></bean>