SpringBoot如何在線程中獲取@Service Bean類
如何在線程中獲取@Service Bean類
這個(gè)適用于沒有Spring配置文件的Springboot項(xiàng)目中,有配置文件的話取bean就方便多了。
下圖是我用@Service注解聲明的一個(gè)Mybatis Mapper Bean,平常在Springboot掃描配置下的類直接用
@Autowired注解依賴注入。


我現(xiàn)在需要在線程中使用,然而Springboot自然而然只能掃描到自己的東西 ,線程實(shí)現(xiàn)的Runnable接口,
我們現(xiàn)在開始解決問題
1、首先創(chuàng)建一個(gè)配置類繼承ApplicationContextAware,取得ApplicationContext。

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

這樣你就能在線程中得到你要的Bean類了。挺坑的?。。?/p>
多線程中獲取bean對(duì)象
注:多線程場(chǎng)景下,使用默認(rèn)的spring自動(dòng)裝配無法獲取bean對(duì)象,此方案可以從context上下文中直接獲取bean。
創(chuàng)建類
實(shí)現(xiàn)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);
? ? }
}多線程中的調(diào)用方式
.method()是bean對(duì)象的方法名稱
ApplicationContextProvider.getBean(AccountAssetService.class).method()
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中的HashSet詳解和使用示例_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
HashSet 是一個(gè)沒有重復(fù)元素的集合。接下來通過實(shí)例代碼給大家介紹java中的hashset相關(guān)知識(shí),感興趣的朋友一起看看吧2017-05-05
java swing 實(shí)現(xiàn)加載自定義的字體
這篇文章主要介紹了java swing 實(shí)現(xiàn)加載自定義的字體,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
Java實(shí)現(xiàn)導(dǎo)出合并Excel單元格
隨著數(shù)據(jù)的不斷增長(zhǎng),很多時(shí)候需要將數(shù)據(jù)導(dǎo)出到Excel中進(jìn)行分析、處理和展示。本文將介紹如何使用Java實(shí)現(xiàn)Excel導(dǎo)出,并且可以合并單元格,需要的可以參考一下2023-04-04
Java并發(fā)Map面試線程安全數(shù)據(jù)結(jié)構(gòu)全面分析
本文將探討如何在Java中有效地應(yīng)對(duì)這些挑戰(zhàn),介紹一種強(qiáng)大的工具并發(fā)Map,它能夠幫助您管理多線程環(huán)境下的共享數(shù)據(jù),確保數(shù)據(jù)的一致性和高性能,深入了解Java中的并發(fā)Map實(shí)現(xiàn),包括ConcurrentHashMap和ConcurrentSkipListMap,及相關(guān)知識(shí)點(diǎn)2023-09-09
Spring的Aware接口實(shí)現(xiàn)及執(zhí)行順序詳解
這篇文章主要為大家介紹了Spring的Aware接口實(shí)現(xiàn)及執(zhí)行順序詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12

