普普通通类获取spring容器控制的bean

普通类获取spring容器控制的bean

访问方式例子:

FlowAlarmService flowAlarmService = (FlowAlarmService) Global.getSpringBean("flowAlarmService");

 

 

package com.sinoufc.framework.cache;

import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import javax.sql.DataSource;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.BeanFactory;

import com.sinoufc.base.permission.baseinfo.model.BaseInfo;
import com.sinoufc.framework.ui.UISession;

import freemarker.template.Configuration;
import freemarker.template.Template;

/**
 * 全局的资源工厂
 * 
 * @author 
 * @since 
 */
public class Global {

	private static Logger log=Logger.getLogger(Global.class);
	/** spring bean工厂 */
	private static BeanFactory beanFactory;
	/** freemarker模板工厂 */
	private static Configuration fmConfig;
	/** 数据源缓存 */
	private static Map<String, DataSource> dataSourceMap = new ConcurrentHashMap();
	/** 当前用户使用数据源 */
	private static ThreadLocal<DataSource> dataSourceThread = new ThreadLocal<DataSource>();
	/** 当前线程session */
	private static ThreadLocal<UISession> currentSession = new ThreadLocal<UISession>();

	/**
	 * 通过sessionId获得用户session
	 * 
	 * @param key sessionId
	 * @return 用户session
	 */
	public static UISession getSession(String sessionId) {
		CacheUtil cacheUtil = (CacheUtil) Global.getSpringBean("cacheUtil");
		return cacheUtil.getSession(sessionId);
	}

	/**
	 * 缓存session
	 * 
	 * @param sessionId sessionId
	 * @param session 用户session
	 * 
	 */
	public static void setSession(String sessionId, UISession session) {
		CacheUtil cacheUtil = (CacheUtil) Global.getSpringBean("cacheUtil");
		cacheUtil.setSession(sessionId, session);
	}

	/**
	 * 通过名称获得bean
	 * 
	 * @param name bean名称
	 * @return bean
	 */
	public static Object getSpringBean(String name) {
		return beanFactory.getBean(name);
	}

	/**
	 * 设置spring工厂
	 * 
	 * @param beanFactory spring的bean工厂
	 */
	public static void setBeanFactory(BeanFactory beanFactory) {
		Global.beanFactory = beanFactory;
	}

	public static void removeSession(String sessionId){
		
		CacheUtil cacheUtil = (CacheUtil) Global.getSpringBean("cacheUtil");
		cacheUtil.removeSession(sessionId);
	}
	
	
	/**
	 * 获得当前线程数据源
	 * 
	 * @return 当前用户所使用数据源
	 */
	public static DataSource getDataSource() {
		return dataSourceThread.get();
	}

	/**
	 * 设置当前用户所使用数据源
	 * 
	 * @param dataSource 要设置的数据源
	 */
	public static void setDataSource(DataSource dataSource) {
		dataSourceThread.set(dataSource);
	}

	/**
	 * 获得系统基础信息
	 * 
	 * @param type 系统基础信息
	 * @return 某种类型的基础信息列表
	 */
	public static List<BaseInfo> getBaseInfo(String type) {
		CacheUtil cacheUtil = (CacheUtil) Global.getSpringBean("cacheUtil");
		return cacheUtil.getBaseInfo(type);
	}

	/**
	 * 获得freemarker模板
	 * 
	 * @param name 模板名称
	 * @return freemarker模板
	 */
	public static Template getTemplate(String name) {
		try {
			return fmConfig.getTemplate(name);
		} catch (IOException e) {
			throw new RuntimeException(e);
		}
	}

	/**
	 * 设置freemarker模板工程 n
	 * 
	 * @param fmConfig 模板工厂
	 */
	public static void setFmConfig(Configuration fmConfig) {
		Global.fmConfig = fmConfig;
	}

	public static UISession getCurrentSession() {
		return currentSession.get();
	}

	public static void setCurrentSession(UISession session) {
		currentSession.set(session);
	}
	
}