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

普通类获取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,或者在这些类中使用YAML配置文件中的配置信息。本篇将详细介绍如何在这样的场景下实现这一目标。 首先,让我们来理解如何在非Spring...

    SpringBoot如何在普通类加载Spring容器

    SpringBoot如何在普通类加载Spring容器 SpringBoot作为一个流行的Java框架,提供了很多便捷...通过封装一个工具类来获取Spring容器中的Bean,可以方便地在普通类中使用这些Bean,这种方式非常实用,可以提高开发效率。

    普通类调用Spring bean对象

    这样,我们就能在普通类中获取到Spring管理的bean实例。 2. **@Autowired**:如果普通类也是Spring的一部分,即它也被Spring管理,那么可以使用注解`@Autowired`来自动装配bean。这样,Spring会自动找到类型匹配的...

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

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

    17. Spring Boot普通类调用bean【从零开始学Spring Boot】

    Spring Boot普通类调用bean【从零开始学Spring Boot】”旨在指导初学者如何在非Spring管理的类中访问和使用Spring容器中的bean。下面将详细讲解这个主题。 首先,了解Spring Boot的基础概念是必要的。Spring Boot...

    普通对象使用spring容器中的对象的实现方法

    然后,我们可以使用这个类来获取spring容器中的对象。例如,我们可以使用getBeanByClass方法来根据类类型来获取bean。 在使用这个实现方法时,我们需要注意以下几点: 首先,我们需要确保spring容器已经被正确地...

    spring自动扫描和管理Bean的示例

    组件扫描是指Spring容器会遍历指定的包及其子包,寻找带有特定注解的类,这些注解表明该类是一个Spring Bean。常见的注解有@Component、@Service、@Repository和@Controller,它们分别代表不同层次的组件角色。 1. ...

    springBean加载过程源码解析文档,附有代码类名和行数

    @SpringBootApplication 会根据类型决定是创建普通 WEB 容器还是 REACTIVE 容器还是普通 Annotation 的 IOC 容器。 6. Spring 容器前置处理 在 refresh 容器之前,SpringApplication 会进行一些前置处理,例如...

    spring 中特殊bean用法

    在Spring框架中,Bean是核心概念,它代表了应用程序中的对象,这些对象由Spring容器管理其生命周期和依赖关系。特殊Bean用法主要涉及Spring提供的多种高级特性,包括但不限于工厂方法、 prototype scope、AOP代理、...

    Spring Boot中Bean定义方调用方式解析

    使用 SpringUtil 工具类可以让我们在普通类中轻松地获取 applicationContext 对象,从而获取所需的 Bean 对象。这样,我们就可以在不需要将类注入到 Spring 容器中的情况下使用 Spring 提供的对象。 结语 在本文中...

    spring在IoC容器中装配Bean详解

    Spring 在 IoC 容器中装配 Bean 详解 Spring 框架中的 IoC 容器是一个核心组件,它提供了 Bean 的装配、管理和依赖注入等功能。在 Spring 框架中,IoC 容器是 Bean 的容器,负责创建、管理和装配 Bean。在本文中,...

    Spring学习笔记(9)----让Spring自动扫描和管理Bean

    这些注解可以用于标记任何普通的Java类,声明它们为Spring Bean。`@Component`用于通用组件,`@Service`用于业务层,`@Repository`用于数据访问层。 2. **`@Autowired`注入**:当Bean被自动扫描后,Spring可以使用`...

    Spring源码学习六:bean初始化1

    这个过程确保了Spring容器对Bean的控制,保证了应用程序的正常运行。 总结来说,Spring在初始化阶段通过`finishBeanFactoryInitialization()`方法进行了一系列的准备工作,包括设置转换服务、处理织入转换器、停用...

    关于spring boot中几种注入方法的一些个人看法

    @Bean 是一个注解,用来将一个普通的对象转换为一个 Spring bean,以便可以在spring 容器中管理。@Bean 可以使用在方法上,以便将该方法的返回值转换为一个 Spring bean。 在 Spring Boot 中,以上几种注入方法都是...

    Axis2集成Spring.doc

    本文档中的示例通过外部Spring容器获取指定的实现Bean,并通过Axis2提供服务。这涉及到以下几个关键步骤: **1. 创建服务实现类:** - 开发者需要手动编写WSDL文件和服务实现类,而不是使用Axis2提供的工具(如...

    【Spring】总结Spring整合Mybatis的底层原理实现步骤

    Bean与普通Java对象的区别在于,Bean是由Spring负责实例化的,同时,当从Spring容器中获取Bean时,Spring还会对Bean中带有`@Autowired` 注解的属性进行自动注入赋值,这是手工new对象无法实现的特性。Spring容器中的...

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

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

    spring boot基于Java的容器配置讲解

    Spring容器会根据`Conf`类中的`@Bean`注解来创建bean,然后我们可以通过bean的类型从容器中获取对象并调用其方法。 值得注意的是,`AnnotationConfigApplicationContext`可以接受多个类作为输入,这些类可以是`@...

    spring相关内容笔记

    在获取 IOC 容器中 bean 时,需要注意 bean 的 id 唯一性和类型唯一性。 七、Bean 的生命周期 Bean 的生命周期包括创建、初始化、销毁三个阶段。Spring 提供了多种方式来管理 Bean 的生命周期。 八、AOP AOP 是 ...

    Spring 5.2.9的IOC核心jar包

    Bean是Spring容器管理的对象,可以通过XML配置文件或者Java配置类来定义。Bean的定义包括了类名、属性、构造器参数等信息,Spring容器根据这些信息创建和管理Bean。 **注解驱动的配置** Spring 5.2.9支持使用注解来...

Global site tag (gtag.js) - Google Analytics