spring中bean的三种实例化方式

第一种:通过构造函数实例化bean。给bean提供一个无参的构造方法(可以是默认的)通过构造函数实例化bean,需要指定class属性:

public class PersonServiceBean implements PersonService {
	
	public void save() {
		System.out.println("保存成功!");
	}
}

spring配置文件中的配置:

<!--PersonServiceBean-->

<beanid="personService"class="com.ibm.service.impl.PersonServiceBean"/>

第二种:通过静态工厂方法实例化bean。定义工厂bean时,除了要指定工厂的class属性外,同时还必须使用factory-method属性指定要调用的工厂方法的名称。注意factory-method的方法是静态的。

public class PersonServiceBean implements PersonService {
	
	public void save() {
		System.out.println("保存成功!");
	}
}
public class PersonServiceBeanFactory {
	
	// 静态工厂方法
	public static PersonService createPersonServiceBean() {
		return new PersonServiceBean();
	}
	
}

spring配置文件中的配置:

<beanid="personService2"class="com.ibm.service.impl.PersonServiceBeanFactory"

factory-method="createPersonServiceBean"/>

第三种:通过实例工厂实例化bean。必须先实例化一个工厂(factory)bean,再在定义bean时通过factory-bean属性来设置引用哪个实例化工厂,通过factory-method来设置使用哪个方法:

public class PersonServiceBean implements PersonService {
	
	public void save() {
		System.out.println("保存成功!");
	}
}
public class PersonServiceBeanFactory {

	// 实例工厂方法 
	public PersonService createPersonServiceBean2() {
		return new PersonServiceBean();
	}
	
}

spring配置文件中的配置:

<beanid="personServiceBeanFactory"class="com.ibm.service.impl.PersonServiceBeanFactory"/>

<beanid="personService3"factory-bean="personServiceBeanFactory"factory-method="createPersonServiceBean2"/>

相关推荐