最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring 多線程下注入bean問題詳解

 更新時間:2017年10月16日 15:01:14   作者:jijs  
本篇文章主要介紹了Spring 多線程下注入bean問題詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文介紹了Spring 多線程下注入bean問題詳解,分享給大家,具體如下:

問題

Spring中多線程注入userThreadService注不進去,顯示userThreadService為null異常

代碼如下:

public class UserThreadTask implements Runnable {
  @Autowired
  private UserThreadService userThreadService;

  @Override
  public void run() {
    AdeUser user = userThreadService.get("0");
    System.out.println(user);
  }
}

解決方案一

把要注入的Service,通過構造傳過去,代碼如下:

public class UserThreadTask implements Runnable {
  private UserThreadService userThreadService;

  public UserThreadTask(UserThreadService userThreadService) {
    this.userThreadService = userThreadService;
  }

  @Override
  public void run() {
    AdeUser user = userThreadService.get("0");
    System.out.println(user);
  }
}
Thread t = new Thread(new UserThreadTask(userThreadService));
t.start();

解決方案二

通過ApplicationContext中獲取需要使用的Service

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class ApplicationContextHolder implements ApplicationContextAware {
  private static ApplicationContext context;
  @Override
  public void setApplicationContext(ApplicationContext context) throws BeansException {
    ApplicationContextHolder.context = context;
  }
  //根據(jù)bean name 獲取實例
  public static Object getBeanByName(String beanName) {
    if (beanName == null || context == null) {
      return null;
    }
    return context.getBean(beanName);
  }
  //只適合一個class只被定義一次的bean(也就是說,根據(jù)class不能匹配出多個該class的實例)
  public static Object getBeanByType(Class clazz) {
    if (clazz == null || context == null) {
      return null;
    }
    return context.getBean(clazz);
  }
  public static String[] getBeanDefinitionNames() {
    return context.getBeanDefinitionNames();
  }
}

Spring 加載自己定義的ApplicationContextHolder類

<bean class = "cn.com.infcn.applicationcontext.ApplicationContextHolder"></bean>

根據(jù) bean 的名稱獲取實例

復制代碼 代碼如下:

UserService user = (UserService) ApplicationContextHolder.getBeanByName("userService");

根據(jù) bean 的Class 獲取實例(如果該Class存在多個實例,會報錯的)

復制代碼 代碼如下:

UserService user = (UserService) ApplicationContextHolder.getBeanByType(UserService.class);

這種方式,不管是否多線程,還是普通的不收spring管理的類,都可以使用該方法獲得spring管理的bean。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Druid連接池未關閉導致內(nèi)存泄漏問題

    Druid連接池未關閉導致內(nèi)存泄漏問題

    這篇文章主要介紹了Druid連接池未關閉導致內(nèi)存泄漏問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • SpringDataJPA實體類關系映射配置方式

    SpringDataJPA實體類關系映射配置方式

    這篇文章主要介紹了SpringDataJPA實體類關系映射配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java中ResponseBodyEmitter的實現(xiàn)

    Java中ResponseBodyEmitter的實現(xiàn)

    這篇文章主要介紹了Java中ResponseBodyEmitter的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 詳解java枚舉用法及實例

    詳解java枚舉用法及實例

    這篇文章主要介紹了Java枚舉詳解及使用實例,本文直接給出實例代碼,需要的朋友可以參考下
    2017-04-04
  • SpringBoot整合Netty的流程步驟

    SpringBoot整合Netty的流程步驟

    Netty是一個基于Java的開源網(wǎng)絡應用框架,它提供了高性能、異步事件驅動的網(wǎng)絡編程能力,Netty旨在幫助開發(fā)者構建高性能、高可靠性的網(wǎng)絡應用程序,本文給大家詳細介紹了SpringBoot整合Netty的流程步驟,需要的朋友可以參考下
    2023-09-09
  • Java中的HashMap內(nèi)存泄漏問題詳解

    Java中的HashMap內(nèi)存泄漏問題詳解

    這篇文章主要介紹了Java中的HashMap內(nèi)存泄漏問題詳解,WeakHashMap中的key是弱引用,如果再使用之后沒有及時remove掉這個key,那么當GC時key就可能會被回收,導致key對應的value對象占用的內(nèi)存無法回收進而導致內(nèi)存泄漏,需要的朋友可以參考下
    2023-09-09
  • spring-boot中使用spring-boot-devtools的實現(xiàn)代碼

    spring-boot中使用spring-boot-devtools的實現(xiàn)代碼

    這篇文章主要介紹了spring-boot中使用spring-boot-devtools的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • Spring?Boot?Actuator?漏洞利用小結

    Spring?Boot?Actuator?漏洞利用小結

    spring對應兩個版本,分別是Spring Boot 2.x和Spring Boot 1.x,因此后面漏洞利用的payload也會有所不同,這篇文章主要介紹了Spring?Boot?Actuator?漏洞利用小結,需要的朋友可以參考下
    2023-11-11
  • Java并發(fā)編程之volatile變量介紹

    Java并發(fā)編程之volatile變量介紹

    這篇文章主要介紹了Java并發(fā)編程之volatile變量介紹,volatile提供了弱同步機制,用來確保將變量更新通知到其它線程,需要的朋友可以參考下
    2015-04-04
  • SpringBoot概述及在idea中創(chuàng)建方式

    SpringBoot概述及在idea中創(chuàng)建方式

    SpringBoot提供了一種快速使用Spring的方式,基于約定大于配置的思想,可以讓開發(fā)人員不必在配置與邏輯業(yè)務之間進行思維的切換,這篇文章主要介紹了SpringBoot概述及在idea中創(chuàng)建方式,需要的朋友可以參考下
    2022-09-09

最新評論

张家港市| 通化县| 武川县| 中卫市| 乐业县| 长寿区| 特克斯县| 桐梓县| 花莲县| 沾化县| 郧西县| 澄江县| 辉县市| 丹阳市| 黄骅市| 普洱| 宁津县| 东光县| 乐至县| 樟树市| 伊吾县| 黄梅县| 安义县| 海晏县| 米脂县| 南华县| 大关县| 马公市| 永春县| 丰都县| 寻甸| 清水河县| 什邡市| 万山特区| 新巴尔虎左旗| 抚州市| 青神县| 九寨沟县| 巧家县| 黄龙县| 通河县|