Bean de configuração de fábrica da instância

Crie o Bean chamando o método de fábrica da instância

Método de fábrica da instância: o processo de criação do objeto é encapsulado em outro método de instância do objeto.Quando o cliente precisa solicitar um objeto, ele só precisa chamar o método da instância sem se preocupar com os detalhes da criação do objeto.

Para declarar Bean criado pelo método factory da instância

Especifique o bean que possui o método factory no atributo factory-bean do bean

Especifique o nome do método de fábrica no atributo de método de fábrica

Use elementos construtor-arg para passar parâmetros de método para métodos de fábrica

<?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
	 	factroy-bean: 指定工厂bean
	 	factroy-method:指定实例工厂方法.
	  -->
	 <bean id="iof" class="com.learn.spring.factory.InstanceObjectFactory"></bean>
	 <bean id="car1" factory-bean="iof" factory-method="getCar">
	 	<constructor-arg value="bmw"></constructor-arg>
	 </bean> 
	
</beans>
package com.learn.spring.factory;

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

import com.learn.spring.autowire.Car;

/**
 * 获取Car对象的工厂.
 * InstanceObjectFactory  iof = new InstanceObjectFactory();
 * 
 * Car car = iof.getCar("bmw");
 */
public  class InstanceObjectFactory {
	
	private  Map<String,Car> cars = new HashMap<String,Car>();
	
	public InstanceObjectFactory(){
		cars.put("audi", new Car("Audi", 450000));
		cars.put("bmw", new Car("bmw",550000));
	}
	
	/**
	 * 实例工厂方法
	 */
	public  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 car1 =(Car) ctx.getBean("car1");
		System.out.println(car1);
	}
}

 

2545 artigos originais publicados · 66 elogiados · 210.000 visualizações

Acho que você gosta

Origin blog.csdn.net/Leon_Jinhai_Sun/article/details/105546497
Recomendado
Clasificación