`
elvis4139
  • 浏览: 147921 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

线程中获取SpringBean

阅读更多
1、Spring工具类
public class SpringApplicationContextHolder implements ApplicationContextAware {

	private static ApplicationContext context;

	@Override
	public void setApplicationContext(ApplicationContext context) throws BeansException {
		SpringApplicationContextHolder.context = context;
	}

	public static Object getSpringBean(String beanName) {
		if (null == beanName || 0 == beanName.length()) {
			throw new IllegalArgumentException("beanName is required!");
		}
		return context == null ? null : context.getBean(beanName);
	}

	public static String[] getBeanDefinitionNames() {
		return context.getBeanDefinitionNames();
	}
}


2、spring.xml注册文件配置bean
<bean id="springApplicationContextHolder" class="com.cnpc.pmsapp.commons.utils.SpringApplicationContextHolder" />
	
<bean id="dailyReportService" class="com.cnpc.pmsapp.dailyreport.service.impl.DailyReportServiceImpl" />


3、线程中调用
IDailyReportService dailyReportService = (IDailyReportService) SpringApplicationContextHolder
					.getSpringBean("dailyReportService");
			
			String filePath = dailyReportService.createDailyReportExcel();
分享到:
评论

相关推荐

    线程中获取spring 注解bean

    当需要在线程中获取Spring注解的bean时,有几种常见的方法: 1. **ThreadLocal**:Spring提供了一种名为`ThreadLocalTargetSource`的特殊`TargetSource`实现,可以将bean实例绑定到当前线程。这样,每个线程都有其...

    Spring 多线程下注入bean问题详解

    在 Spring 框架中,多线程下注入 Bean 是一个常见的问题。本文将详细介绍 Spring 多线程下注入 Bean 问题,并提供两种解决方案。 问题描述 在多线程环境下,使用 Spring 框架时,可能会遇到 Bean 注入失败的问题。...

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

    在大数据采集项目中,这种灵活性非常有用,因为有时我们可能需要在非Spring管理的组件或线程中访问配置信息或依赖的Bean。确保正确初始化和管理`ApplicationContext`以及配置属性,就能在任何地方充分利用Spring的...

    Spring bean为什么默认是单例

    这意味着无论有多少次请求获取同一个Bean,Spring容器只会创建一个实例,并且在整个应用生命周期中重复使用这个实例。这种设计决策基于性能和资源管理的考虑。 首先,让我们深入理解Spring Bean的单例模式。当一个...

    获取Spring容器

    在某些情况下,我们可能需要通过编程的方式来获取Spring容器中的Bean。例如,在非Spring托管的代码或者需要动态获取Bean的情况下。下面详细介绍如何通过编程的方式手动获取Spring容器中的Bean。 ##### 1. 配置...

    处理ssh组合框架中如何用getBean获取实体

    在SSH框架下,有时候我们需要在代码中获取Spring管理的bean,以便于调用其方法或进行业务操作。本篇文章将详细介绍在SSH框架中如何通过`getBean`方法获取实体。 1. **`getBean`方法简介** `getBean`是Spring框架...

    多线程Autowire注入null的解决方案.docx

    解决方案二:写个获取spring bean的帮助类,实现ApplicationContextAware接口 可以创建一个帮助类,实现ApplicationContextAware接口,并在其中保存Spring ApplicationContext。然后,在需要使用service的地方,...

    java中spring里实现多线程

    当我们谈到在Spring中实现多线程,实际上是在讨论如何在Spring环境中创建、管理和协调并发执行的任务。这涉及到Java的并发API以及Spring对这些API的包装和扩展。 首先,让我们了解Java中的多线程基础。在Java中,...

    Quartz注入Spring的Bean

    3. **Spring注入Bean到Job**:在Job执行时,我们可以直接注入其他由Spring管理的Bean,无需在Job中创建这些对象,从而减少了代码的复杂性,增强了可重用性。 4. **JobFactory的自定义**:Quartz默认使用...

    JSP 中Spring Bean 的作用域详解

    每次从Spring容器中获取prototype作用域的Bean时,都会得到一个新的实例。这就意味着每次使用getBean()方法,都会创建一个新的Bean对象,从而允许开发者管理对象的完整生命周期,例如用于创建线程池或实现会话管理等...

    Java获取Bean的几种方式.pdf

    实现这个接口,Spring会在初始化时自动调用`setApplicationContext(ApplicationContext context)`方法,将ApplicationContext注入到Bean中。 ```java public class MyService implements ...

    Spring 异步多线程动态任务处理的使用心得

    本文将深入探讨在Spring中如何利用多线程和动态任务来实现异步处理,并分享一些实践心得。 首先,我们要理解Spring的异步处理机制。Spring通过`@Async`注解实现了方法级别的异步执行。当一个带有`@Async`的方法被...

    Springboot实现多线程注入bean的工具类操作

    总之,Spring Boot通过`ApplicationContextAware`接口和相关的工具类,使得在多线程环境中获取和使用bean变得简单易行,避免了手动管理bean实例的问题,保证了代码的整洁和可维护性。同时,这种方式也确保了bean的...

    详解SpringBoot 多线程处理任务 无法@Autowired注入bean问题解决

    在 SpringBoot 多线程处理任务中无法使用 @Autowired 注入 bean 的问题,可以通过创建一个工具类来解决,这个工具类可以用于获取 bean 对象,从而解决多线程处理任务中无法使用 @Autowired 注入 bean 的问题。

    Spring获取ApplicationContext对象工具类的实现方法

    在实际开发过程中,经常需要从各个角落获取到这个ApplicationContext对象,以便于能够使用Spring提供的各种服务。本文将详细介绍Spring中获取ApplicationContext对象的工具类实现方法。 在Spring中,典型的获取...

    Spring通过ApplicationContext主动获取bean的方法讲解

    这个问题在实际开发中非常常见,特别是在异步线程或某些特殊情况下无法使用AutoWired和Component注解时,就需要使用ApplicationContext来获取bean。 首先,我们需要了解什么是ApplicationContext。...

    Spring-Boot中如何使用多线程处理任务方法

    最后,我们可以编写一个测试用例来测试使用 Spring Context 获取 Bean,查看是否是多实例,例如: ```java @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = ApplicationMain.class) public ...

    4 后台使用Spring中的Bean质量评估193210111党涛1

    Spring将调用这个静态方法来获取Bean实例,然后进行后续的初始化和依赖注入。 第四种方式是使用实例工厂方法。与静态工厂方法类似,但需要一个工厂实例。`factory-bean`属性用于指定工厂Bean的ID,`factory-method`...

    解决SpringBoot项目使用多线程处理任务时无法通过@Autowired注入bean问题

    在Spring Boot项目中,我们通常使用@Autowired注解来注入bean对象,但是当我们使用多线程处理任务时,经常会遇到无法注入bean的问题。这是因为多线程处理任务会创建新的线程,而新的线程中无法注入bean对象。 解决...

Global site tag (gtag.js) - Google Analytics