`
eagletony
  • 浏览: 40478 次
  • 来自: ...
社区版块
存档分类
最新评论

普通类获取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);
	}
	
}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    在非spring注解类中使用spring容器中的bean_普通类中使用yml配置文件中的配置信息

    在非spring注解类中使用spring容器中的bean_普通类中使用yml配置文件中的配置信息,在大数据采集项目中用到的,已经测试过了

    在web容器(WebApplicationContext)中获取spring中的bean

    Spring把Bean放在这个容器中,普通的类在需要的时候,直接用getBean()方法取出

    Spring — 基于Java类的配置 代码实例

    普通的POJO只要标注@Configuration注解,就可以为Spring容器提供Bean定义的信息了,每个标注了@Bean的类方法都相当于提供一个Bean的定义信息。 基于Java类的配置方法和基于XML或基于注解的配置方式相比,前者通过...

    Spring.3.x企业应用开发实战(完整版).part2

    4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 不同配置方式比较 4.13 小结 第5章 Spring容器高级主题 5.1 Spring容器技术内幕 5.1.1 内部工作机制 5.1.2 BeanDefinition 5.1.3 InstantiationStrategy 5.1.4 ...

    Spring3.x企业应用开发实战(完整版) part1

    4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 不同配置方式比较 4.13 小结 第5章 Spring容器高级主题 5.1 Spring容器技术内幕 5.1.1 内部工作机制 5.1.2 BeanDefinition 5.1.3 InstantiationStrategy 5.1.4 ...

    spring基础

    这样,当 Spring 容器启动时,AutowiredAnnotationBeanPostProcessor 将扫描 Spring 容器中所有 Bean,当发现 Bean 中拥有 @Autowired 注释时就找到和其匹配(默认按类型匹配)的 Bean,并注入到对应的地方中去。...

    springboot学习思维笔记.xmind

    注入普通字符 注入操作系统属性 注入表达式云算结果 注入其他Bean的属性 注入文件内容 注入网址内容 注入属性文件 Bean的初始化和销毁 Java配置方式 注解方式 Profile @Profile ...

    基于maven项目的SSM框架与layu前端框架的代码

    在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean的类(假设这个类名是A),分配的方法就是调用A的setter...

    jTester使用指南(带书签).pdf

    加载spring容器 @AutoBeanInject让框架自动查找和注册需要的bean @AutoBeanInject规则详解 Spring Bean依赖项查找规则 特殊实现类的bean注册 自动注册的bean如何实现spring的init-method方法 声明bean的简单属性 ...

    SpringShiro分布式缓存版

    tinys普通用户只能访问index.jsp admin用户通过添加了admin的permission,所以可以访问admin.jsp role用户通过添加了role角色,所以可以访问role.jsp 这是最基本的shiro的运用..目的是让你快速了解shiro的机制.. 这...

    springboot参考指南

    获取帮助 iii. 3. 第一步 iv. 4. 使用Spring Boot v. 5. 了解Spring Boot特性 vi. 6. 迁移到生存环境 vii. 7. 高级主题 3. II. 开始 i. 8. Spring Boot介绍 ii. 9. 系统要求 i. 9.1. Servlet容器 iii. 10. Spring ...

    基本于J2EE的Ajax宝典.rar

    19.4.3 将 Spring容器中的 Bean 转化成JavaScript 对象 113 19.5 在客户端调用 JavaScript 对象 114 19.5.1 获取 Blog文章列表 115 19.5.2 控制 Blog文章列表的翻页 116 19.5.3 页面加载时的动作 117 19.5.4 ...

    史上最全java面试,103项重点知识,带目录

    12. 普通类和抽象类有哪些区别? 6 13. 抽象类能使用 final 修饰吗? 6 14. 接口和抽象类有什么区别? 7 15. java 中 IO 流分为几种? 7 16. BIO、NIO、AIO 有什么区别? 7 17. Files的常用方法都有哪些? 8 二、...

    Java常见面试题208道.docx

    12.普通类和抽象类有哪些区别? 13.抽象类能使用 final 修饰吗? 14.接口和抽象类有什么区别? 15.java 中 IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有...

    JMS入门Demo

    ⑶MessageListenerAdapter,将消息委托交给一个普通的java类来处理.. 转化器阶段 : 实现MessageConverter接口来转换JMS对象与java对象.. 其实在使用MessageListenerAdapter时,Spring默认为我们提供了...

    基于MyEclipse搭建maven+springmvc整合图文教程(含源码0

    &lt;bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; &lt;/bean&gt; GeneralController类代码 package Controller; import org.springframework.stereotype.Controller; ...

    Java学习笔记-个人整理的

    {1.9}流程控制}{31}{section.1.9} {1.9.1}\texttt {if\ldots esle\ldots }}{31}{subsection.1.9.1} {1.9.2}\texttt {switch}}{31}{subsection.1.9.2} {1.9.3}\texttt {while}}{32}{subsection.1.9.3} {1.9.4}\...

    MyRestUtil:基于springboot的rest调用框架,定义接口然后即可直接注入使用

    MyRestUtil给部门写的...更新记录2017.10.11 将 RestUtilInit 由普通bean修改为 BeanFactoryPostProcessor ,保证IRequestHandle优先与其他任何bean注册到容器中解决bean的依赖问题,不需要在接口类中增加 @Lazy 注解

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    这些都预示着我们进入了一个新的互联网阶段web 2.0,它是相对web 1.0的新的一类互联网应用的总称,是一次从核心内容到外部应用的革命[10]。这个阶段发展迅速,互联网应用趋于多样化,其中变化最大的是由web 1.0网站...

Global site tag (gtag.js) - Google Analytics