spring工厂类

1.使用到了单例模式和同步方法:

/*
 * 版权所有: 版权所有(C) 2005,中兴通讯
 * 文件编号: 
 * 文件名称: SpringServiceFactory.java
 * 系统编号: 
 * 系统名称: XX系统
 * 模块编号: EccWeb
 * 模块名称: XXXX模块
 * 设计文件: XXXXX.mdl
 * 完成日期: 2005-8-3 
 * 作    者: 郝焕
 * 内容摘要: 用于产生获取spring取得的实例
 *
 * 属性描述: 该类有属性: 
 *           01. 
 *           02. 
 * 方法描述: 该类有方法: 
 *           01. 
 * 
 * 文件调用: 
 * 
 * 修改记录1:
 * 修改日期:
 * 修 改 人: 
 * 修改内容:
 */
package com.zte.ecc.factory;

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

import javax.servlet.ServletContext;

import com.zte.ssb.web.context.WebApplicationContext;
import com.zte.ssb.web.context.support.WebApplicationContextUtils;

import com.zte.ecc.util.SystemServletContext;

/**
 * 类 编 号: 1
 * 类 名 称: SpringServiceFactory
 * 内容摘要: 用于产生获取spring取得的实例
 * 属性描述: 该类有属性:
 *           01. XXXXXXXX
 *           
 * 方法描述: 该类有方法:
 *           01. XXXXXXXX
 *           
 * @author haohuan
 * @完成日期 2005-8-3
 */
public class SpringServiceFactory
{
    /**
         * 唯一实例
         */
    private static SpringServiceFactory instance;

    /**
     * 服务类缓存map
     */
   // private Map services = new HashMap();

    /**
     * @roseuid 42A39F29037C
     */
    private SpringServiceFactory()
    {

    }

    /**
     * 返回唯一实例.如果是第一次调用此方法,则创建实例
     * @param wac
     * @return 
     * ASM-S设计模型.M03工程管理.M03_PU01工程管理.02Control.Business.EngineServiceFacto
     * ry)
     * @roseuid 42A39F29037A
     */
    public static SpringServiceFactory getInstance()
    {
        if (instance == null)
        {
            syncInit();
        }
        return instance;
    }

    /**
     * @return Void
     * @roseuid 42A39F29037D
     */
    private static synchronized void syncInit()
    {
        if (instance == null)
        {
            instance = new SpringServiceFactory();
        }
    }

    /**
     * 方法编号:                           
     * 方法名称: getServiceObject          
     * 内容摘要: 通过beanID获取具体的服务类
     *                                     
     * @param beanID                       
     * @return Object
     * @roseuid 42A39F29038A
     */
    public Object getServiceObject(String beanID)
    {
        //Object service =null;
//        service = services.get(beanID);
//        if (null == service)
//        {
//            //如果所需要的当前服务类不存在,则创建该服务类
//            service = createServiceObject(beanID);
//            services.put(beanID, service);
//        }

        return createServiceObject(beanID);
    }

    /**
     * 方法编号:                              
     * 方法名称: createServiceObject          
     * 内容摘要: 通过传入beanID生成服务类
     *                                        
     * @param beanID                          
     * @return Object
     * @roseuid 42A39F29038C
     */
    public Object createServiceObject(String beanID)
    {
        ServletContext servletContext = SystemServletContext.getServletContext();
        WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);

        return wac.getBean(beanID);
    }
}

 

posted @ 2016-05-12 17:37  飞翔.  阅读(208)  评论(0编辑  收藏  举报