`

spring中bean的三种实例化方式

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

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



spring配置文件中的配置:
<!-- PersonServiceBean -->
<bean id="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配置文件中的配置:
<bean id="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配置文件中的配置:
<bean id="personServiceBeanFactory" class="com.ibm.service.impl.PersonServiceBeanFactory" />
<bean id="personService3" factory-bean="personServiceBeanFactory" factory-method="createPersonServiceBean2" />


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics