⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 singletoncontainerloader.java

📁 EasyJWeb是基于java技术
💻 JAVA
字号:
/*
 * EsayJF.com Inc.  
 *
 * Copyright (c) 2006-2008 All Rights Reserved.
 */
package com.easyjf.container.impl;

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

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;

import com.easyjf.container.Container;
import com.easyjf.web.config.BeanConfigReader;

/**
 * Create {@link Container} instance from singleton .
 * 
 * @author ecsoftcn@hotmail.com
 * 
 * @version $Id: SingletonContainerLoader.java, 2007-4-15 下午06:09:36 Tony Exp $
 */
public class SingletonContainerLoader {

	/** Container instances (singleton) */
	private static Map<String, Container>	containers	= new HashMap<String, Container>();

	/**
	 * Obtain an instance of {@link Container} through the special configFile .
	 * 
	 * <p>
	 * If the container is not initialized , then initial it .
	 * 
	 * @param configFile bean's configuration file
	 * 
	 * @return an instance of {@link Container}
	 */
	public static Container getInstance(String configFile) {

		Container container = null;

		synchronized (SingletonContainerLoader.class) {

			container = containers.get(configFile);
			if (container == null) {
				// TODO 初始化容器的逻辑需要重新设计

				// 此处目的是获取EasyJWeb容器,如果有了初始化框架的Loader,便可以从Loader中获取容器

				// DefaultContainer container = ContainerLoader.getInstance(configFile);
				Document doc = null;
				try {
					doc = new SAXReader().read(SingletonContainerLoader.class.getResourceAsStream(configFile));
				} catch (DocumentException e) {
					throw new IllegalArgumentException(configFile + "is not a valid config file !");
				}

				// 此处逻辑也很怪,可以考虑在DefaultContainer构造函数中把配置文件传进去,直接构造出一个可用的Container
				DefaultContainer defaultContainer = new DefaultContainer();
				defaultContainer.registerBeanDefinitions(BeanConfigReader.parseBeansFromDocument(doc));
				defaultContainer.refresh();

				container = defaultContainer;

				containers.put(configFile, container);
			}
		}

		return container;

	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -