SpringBoot如何在线程中获取@Service Bean类

 更新时间:2022年02月24日 14:42:04   作者:削个橘子皮  
这篇文章主要介绍了SpringBoot如何在线程中获取@Service Bean类,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

如何在线程中获取@Service Bean类

这个适用于没有Spring配置文件的Springboot项目中,有配置文件的话取bean就方便多了。

下图是我用@Service注解声明的一个Mybatis Mapper Bean,平常在Springboot扫描配置下的类直接用

@Autowired注解依赖注入。

我现在需要在线程中使用,然而Springboot自然而然只能扫描到自己的东西 ,线程实现的Runnable接口,

我们现在开始解决问题

1、首先创建一个配置类继承ApplicationContextAware,取得ApplicationContext。

利用里面的getBean方法取得你想要的Bean类。

这样你就能在线程中得到你要的Bean类了。挺坑的!!!

多线程中获取bean对象

注:多线程场景下,使用默认的spring自动装配无法获取bean对象,此方案可以从context上下文中直接获取bean。

创建类

实现ApplicationContextAware接口;

package com.bond.match.utils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
 * Created with IntelliJ IDEA.
 * Date: 2018/1/11 0011
 * Time: 13:20
 * To change this template use File | Settings | File Templates.
 */
@Component
public class ApplicationContextProvider implements ApplicationContextAware {
    private static ApplicationContext context;
    private ApplicationContextProvider(){}
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        context = applicationContext;
    }
    public  static <T> T getBean(Class<T> aClass){
        return context.getBean(aClass);
    }
}

多线程中的调用方式

.method()是bean对象的方法名称

ApplicationContextProvider.getBean(AccountAssetService.class).method()

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • Java如何替换RequestBody和RequestParam参数的属性

    Java如何替换RequestBody和RequestParam参数的属性

    近期由于接手的老项目中存在所有接口中新增一个加密串来给接口做一个加密效果,所以就研究了一下Http请求链路,发现可以通过 javax.servlet.Filter去实现,这篇文章主要介绍了Java替换RequestBody和RequestParam参数的属性,需要的朋友可以参考下
    2023-10-10
  • 谈谈我对Spring Bean 生命周期的理解

    谈谈我对Spring Bean 生命周期的理解

    Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。这篇文章主要介绍了Spring Bean 生命周期,需要的朋友可以参考下
    2018-03-03
  • SpringBoot上传和下载文件的原理解析

    SpringBoot上传和下载文件的原理解析

    文件上传的功能很常见,但是很多人并不清楚文件上传后的具体原理,接下来通过本文给大家分享SpringBoot上传和下载文件的原理解析,感兴趣的朋友一起看看吧
    2021-07-07
  • Java切面(Aspect)的多种实现方式

    Java切面(Aspect)的多种实现方式

    这篇文章主要给大家介绍了关于Java切面(Aspect)的多种实现方式,在Java开发中切面(Aspect)是一种常用的编程方式,用于实现横切关注点(cross-cutting concern),需要的朋友可以参考下
    2023-08-08
  • Spring Boot缓存实战 EhCache示例

    Spring Boot缓存实战 EhCache示例

    本篇文章主要介绍了Spring Boot缓存实战 EhCache示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • java回溯算法解数独问题

    java回溯算法解数独问题

    这篇文章主要为大家详细介绍了java回溯算法解数独问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • mybatis 使用jdbc.properties文件设置不起作用的解决方法

    mybatis 使用jdbc.properties文件设置不起作用的解决方法

    这篇文章主要介绍了mybatis 使用jdbc.properties文件设置不起作用的解决方法,需要的朋友可以参考下
    2018-03-03
  • springboot的类加载器(org.springframework.boot.loader)过程详解

    springboot的类加载器(org.springframework.boot.loader)过程详解

    这篇文章主要介绍了springboot的类加载器(org.springframework.boot.loader),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 详解Spring Security如何配置JSON登录

    详解Spring Security如何配置JSON登录

    这篇文章主要介绍了详解Spring Security如何配置JSON登录,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • FastJSON的0day漏洞的解决

    FastJSON的0day漏洞的解决

    本文主要介绍了FastJSON的0day漏洞的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05

最新评论