普普通通类获取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); } }