访问方式例子:
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把Bean放在这个容器中,普通的类在需要的时候,直接用getBean()方法取出
普通的POJO只要标注@Configuration注解,就可以为Spring容器提供Bean定义的信息了,每个标注了@Bean的类方法都相当于提供一个Bean的定义信息。 基于Java类的配置方法和基于XML或基于注解的配置方式相比,前者通过...
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 ...
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 容器启动时,AutowiredAnnotationBeanPostProcessor 将扫描 Spring 容器中所有 Bean,当发现 Bean 中拥有 @Autowired 注释时就找到和其匹配(默认按类型匹配)的 Bean,并注入到对应的地方中去。...
注入普通字符 注入操作系统属性 注入表达式云算结果 注入其他Bean的属性 注入文件内容 注入网址内容 注入属性文件 Bean的初始化和销毁 Java配置方式 注解方式 Profile @Profile ...
在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean的类(假设这个类名是A),分配的方法就是调用A的setter...
加载spring容器 @AutoBeanInject让框架自动查找和注册需要的bean @AutoBeanInject规则详解 Spring Bean依赖项查找规则 特殊实现类的bean注册 自动注册的bean如何实现spring的init-method方法 声明bean的简单属性 ...
tinys普通用户只能访问index.jsp admin用户通过添加了admin的permission,所以可以访问admin.jsp role用户通过添加了role角色,所以可以访问role.jsp 这是最基本的shiro的运用..目的是让你快速了解shiro的机制.. 这...
获取帮助 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 ...
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 ...
12. 普通类和抽象类有哪些区别? 6 13. 抽象类能使用 final 修饰吗? 6 14. 接口和抽象类有什么区别? 7 15. java 中 IO 流分为几种? 7 16. BIO、NIO、AIO 有什么区别? 7 17. Files的常用方法都有哪些? 8 二、...
12.普通类和抽象类有哪些区别? 13.抽象类能使用 final 修饰吗? 14.接口和抽象类有什么区别? 15.java 中 IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有...
⑶MessageListenerAdapter,将消息委托交给一个普通的java类来处理.. 转化器阶段 : 实现MessageConverter接口来转换JMS对象与java对象.. 其实在使用MessageListenerAdapter时,Spring默认为我们提供了...
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> </bean> GeneralController类代码 package Controller; import org.springframework.stereotype.Controller; ...
{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给部门写的...更新记录2017.10.11 将 RestUtilInit 由普通bean修改为 BeanFactoryPostProcessor ,保证IRequestHandle优先与其他任何bean注册到容器中解决bean的依赖问题,不需要在接口类中增加 @Lazy 注解
这些都预示着我们进入了一个新的互联网阶段web 2.0,它是相对web 1.0的新的一类互联网应用的总称,是一次从核心内容到外部应用的革命[10]。这个阶段发展迅速,互联网应用趋于多样化,其中变化最大的是由web 1.0网站...