您的位置:首页 > 编程语言 > Java开发

spring核心:bean工厂的装配 2

2010-10-16 21:38 387 查看
本文继续上面的 spring核心:bean工厂的装配系列。主要包含:



3.使用构造函数创建bean

4.使用静态工厂方法创建bean

5.使用非静态工厂方法创建bean

6.bean的标识符



3.使用构造函数创建bean



<bean id="supplier" class="getstart.MessageSupplier">
</bean>





这就相当于spring new出这个对象,这里的bean没有必要是javabean的形式。对于这种形式bean必须存在默认的构造函数,否则报错:



Could not instantiate bean class [beanfactory.SimpleBean]: No default constructor found; nested exception is java.lang.NoSuchMethodException: beanfactory.SimpleBean.<init>()





4.使用静态工厂方法创建bean



这里所指的静态是指“方法是静态的”。这是bean定义中的class就是这个包含静态方法的类。spring调用这个类的静态方法来产生这个类。



/**
 * 
 */
package beanfactory;
/**
 * @author jefferyxu
 *
 */
public class LegacySingleton {
	private static LegacySingleton instance = null;
	
	private LegacySingleton() { }
	
	public static LegacySingleton getInstance() {
		if(null == instance) {
			instance = new LegacySingleton();
		}
		
		return instance;
	}
	
	public String toString() {
		return "i am made by the static class.";
	}
}





<bean id="legacyBean" class="beanfactory.LegacySingleton"
			factory-method="getInstance" abstract="false" lazy-init="default"
			autowire="default">
		</bean>





在myeclipse可以这么添加:







5.使用非静态工厂方法创建bean



首先添加bean factory bean:







创建bean :







生成代码如下:



<bean id="legacyFactory"
			class="beanfactory.instancefactory.ConcreteLegacyFactory">
		</bean>
		
		
		<bean id="productBean" factory-method="make"
			factory-bean="legacyFactory" >	
		</bean>





6.bean的标识符



每个bean可以有一个或者是多个id,如果是多个的话,那么spring会认为其他都是第一个id的别名。可以使用getAliases方法得到所有的别名。



上面中出现的问题:



Attribute 'dependency-check' is not   allowed to appear in element 'bean'.





这个主要是spring版本的问题:the dependency-check and default-dependency-check elements have been removed in Spring 3.0 hence your validation errors.(http://forum.springsource.org/showthread.php?t=77584)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: