spring学习笔记(10)——工厂方法配置bean

来源:互联网 发布:设计模式php 编辑:程序博客网 时间:2024/05/01 13:57

静态工厂方法配置bean

写一个静态工厂方法

package com.zj.beanFactory;import java.util.HashMap;import java.util.Map;public class StaticBeanFactory {    private static Map<String, Person> map = new HashMap<String, Person>();    static{        map.put("tom", new Person("tom"));        map.put("jack", new Person("jack"));        map.put("jane", new Person("jane"));    }    //注意,该方法必须是static    public static Person getPerson(String name){        return map.get(name);    }}

在配置文件中配置

<!--     1. 静态工程方法配置bean             2. class属性: 指向静态工厂全类名,注意,不是指向我们要创建的bean(person)    3. factory-method: 指向获取bean实例的静态方法    4. 如果factory-method有参数,用constructor-arg--><bean id="person1" class="com.zj.beanFactory.StaticBeanFactory"        factory-method="getPerson">    <constructor-arg value="tom"></constructor-arg>     </bean>

这样就能成功地创建person1这个bean实例了。

实例工厂方法配置bean

所谓的实例工厂,就是工厂本身是非静态的,也就是说要先创建工厂这个bean,再用工厂bean来创建其他bean

实例工厂

package com.zj.beanFactory;import java.util.HashMap;import java.util.Map;public class InstanceBeanFactory {    private Map<String, Person> map = null;    public InstanceBeanFactory(){        map = new HashMap<String, Person>();        map.put("tom", new Person("tom"));        map.put("jack", new Person("jack"));        map.put("jane", new Person("jane"));    }    public Person getPerson(String name){        return map.get(name);    }}

配置

<!-- 配置工厂bean --><bean id="personFactory" class="com.zj.beanFactory.InstanceBeanFactory"></bean><!-- 使用工厂来创建person的bean实例 --><bean id="person2" factory-bean="personFactory" factory-method="getPerson">    <constructor-arg value="tom"></constructor-arg></bean>
0 0