读书人

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

发布时间: 2012-09-07 10:38:15 作者: rapoo

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

读书人网 >软件架构设计

热点推荐