静态工厂配置bean

通过调用静态工厂方法创建 Bean

调用静态工厂方法创建 Bean是将对象创建的过程封装到静态方法中. 当客户端需要对象时, 只需要简单地调用静态方法, 而不用关心创建对象的细节.

要声明通过静态方法创建的 Bean, 需要在 Bean 的 class 属性里指定拥有该工厂的方法的类, 同时在 factory-method 属性里指定工厂方法的名称. 最后, 使用 <constrctor-arg> 元素为该方法传递方法参数.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd">
	<!-- 静态工厂配置bean 
		class: 静态工厂类
		factroy-method: 静态工厂方法.
	-->
	<bean id="car" class="com.learn.spring.factory.StaticObjectFactory"
		factory-method="getCar" >
		<constructor-arg value="audi"></constructor-arg>	
	 </bean>
</beans>
package com.learn.spring.factory;

import java.util.HashMap;
import java.util.Map;

import com.learn.spring.autowire.Car;

/**
 * 获取Car对象的工厂.
 * Car car = StaticObjectFactory.getCar("audi");
 */
public  class StaticObjectFactory {
	
	private static Map<String,Car> cars = new HashMap<String,Car>();
	
	static{
		cars.put("audi", new Car("Audi", 450000));
		cars.put("bmw", new Car("bmw",500000));
		
	}
	/**
	 * 静态工厂方法
	 */
	public static Car getCar(String carName){
		return cars.get(carName);
	}
}
package com.learn.spring.factory;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.learn.spring.autowire.Car;

public class Main {
	public static void main(String[] args) {
		ClassPathXmlApplicationContext ctx = 
				new ClassPathXmlApplicationContext("spring-factory.xml");
		Car car =(Car) ctx.getBean("car");
		System.out.println(car);
	}
}
发布了2545 篇原创文章 · 获赞 66 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/Leon_Jinhai_Sun/article/details/105546219