访问方式例子:
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);
}
}