spring有三种方式创建实例。
分别是构造器,静态工厂,实例工厂。
我们较常用的是使用构造器创建。比如有个Person类:
一,构造器的方式
public class Person{
private long id;
private String name;
//getter,setter方法省略
}
一种是使用无参构造器的方式创建,配置如下:
<bean id="person" class="xxx.xxx.Person"></bean>
另一种是使用settter注入属性值,配置如下:
<bean id="person" class="xxx.xxx.Person">
<property name="name" value="xxx"></property>
<property name="id" value="xxx"></property>
</bean>
还有一种是使用有参构造器注入属性,此时Person类需要有一个有参构造器,配置如下:
pubic Person(long id,String name){
this.id = id;
this.name = name;
}
<bean id="person" class="xxx.xxx.Person">
<constructor-arg name="id" value="xxx"></constructor-arg>
<constructor-arg name="name" value="xxx"></constructor-arg>
</bean>
二,静态工厂的方式
工厂类:
public class StaticFactory {
public static Person createPerson(){
return new Person();
}
}
配置静态工厂
<bean id="person" class="xxx.xxx.StaticFactory" factory-method="createPerson"></bean>
三,实例工厂的方式
实例工厂类:
public class PersonFactory {
public Person createPerson(){
return new Person();
}
}
配置实例工厂
<bean id="personFactory" class="xxx.xxx.PersonFactory"></bean>
<bean id="person" factory-bean="personFactory" factory-method="createPerson"></bean>
使用实例工厂创建实例需要先创建工厂实例,再使用工厂创建我们需要的实例。至于是实例工厂与静态工厂是否还有其它区别,暂时还不知道。。。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。