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时,有几种常见的方法: 1. **ThreadLocal**:Spring提供了一种名为`ThreadLocalTargetSource`的特殊`TargetSource`实现,可以将bean实例绑定到当前线程。这样,每个线程都有其...
在 Spring 框架中,多线程下注入 Bean 是一个常见的问题。本文将详细介绍 Spring 多线程下注入 Bean 问题,并提供两种解决方案。 问题描述 在多线程环境下,使用 Spring 框架时,可能会遇到 Bean 注入失败的问题。...
在大数据采集项目中,这种灵活性非常有用,因为有时我们可能需要在非Spring管理的组件或线程中访问配置信息或依赖的Bean。确保正确初始化和管理`ApplicationContext`以及配置属性,就能在任何地方充分利用Spring的...
这意味着无论有多少次请求获取同一个Bean,Spring容器只会创建一个实例,并且在整个应用生命周期中重复使用这个实例。这种设计决策基于性能和资源管理的考虑。 首先,让我们深入理解Spring Bean的单例模式。当一个...
在某些情况下,我们可能需要通过编程的方式来获取Spring容器中的Bean。例如,在非Spring托管的代码或者需要动态获取Bean的情况下。下面详细介绍如何通过编程的方式手动获取Spring容器中的Bean。 ##### 1. 配置...
在SSH框架下,有时候我们需要在代码中获取Spring管理的bean,以便于调用其方法或进行业务操作。本篇文章将详细介绍在SSH框架中如何通过`getBean`方法获取实体。 1. **`getBean`方法简介** `getBean`是Spring框架...
解决方案二:写个获取spring bean的帮助类,实现ApplicationContextAware接口 可以创建一个帮助类,实现ApplicationContextAware接口,并在其中保存Spring ApplicationContext。然后,在需要使用service的地方,...
当我们谈到在Spring中实现多线程,实际上是在讨论如何在Spring环境中创建、管理和协调并发执行的任务。这涉及到Java的并发API以及Spring对这些API的包装和扩展。 首先,让我们了解Java中的多线程基础。在Java中,...
3. **Spring注入Bean到Job**:在Job执行时,我们可以直接注入其他由Spring管理的Bean,无需在Job中创建这些对象,从而减少了代码的复杂性,增强了可重用性。 4. **JobFactory的自定义**:Quartz默认使用...
每次从Spring容器中获取prototype作用域的Bean时,都会得到一个新的实例。这就意味着每次使用getBean()方法,都会创建一个新的Bean对象,从而允许开发者管理对象的完整生命周期,例如用于创建线程池或实现会话管理等...
实现这个接口,Spring会在初始化时自动调用`setApplicationContext(ApplicationContext context)`方法,将ApplicationContext注入到Bean中。 ```java public class MyService implements ...
本文将深入探讨在Spring中如何利用多线程和动态任务来实现异步处理,并分享一些实践心得。 首先,我们要理解Spring的异步处理机制。Spring通过`@Async`注解实现了方法级别的异步执行。当一个带有`@Async`的方法被...
总之,Spring Boot通过`ApplicationContextAware`接口和相关的工具类,使得在多线程环境中获取和使用bean变得简单易行,避免了手动管理bean实例的问题,保证了代码的整洁和可维护性。同时,这种方式也确保了bean的...
在 SpringBoot 多线程处理任务中无法使用 @Autowired 注入 bean 的问题,可以通过创建一个工具类来解决,这个工具类可以用于获取 bean 对象,从而解决多线程处理任务中无法使用 @Autowired 注入 bean 的问题。
在实际开发过程中,经常需要从各个角落获取到这个ApplicationContext对象,以便于能够使用Spring提供的各种服务。本文将详细介绍Spring中获取ApplicationContext对象的工具类实现方法。 在Spring中,典型的获取...
这个问题在实际开发中非常常见,特别是在异步线程或某些特殊情况下无法使用AutoWired和Component注解时,就需要使用ApplicationContext来获取bean。 首先,我们需要了解什么是ApplicationContext。...
最后,我们可以编写一个测试用例来测试使用 Spring Context 获取 Bean,查看是否是多实例,例如: ```java @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = ApplicationMain.class) public ...
Spring将调用这个静态方法来获取Bean实例,然后进行后续的初始化和依赖注入。 第四种方式是使用实例工厂方法。与静态工厂方法类似,但需要一个工厂实例。`factory-bean`属性用于指定工厂Bean的ID,`factory-method`...
在Spring Boot项目中,我们通常使用@Autowired注解来注入bean对象,但是当我们使用多线程处理任务时,经常会遇到无法注入bean的问题。这是因为多线程处理任务会创建新的线程,而新的线程中无法注入bean对象。 解决...