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

今天就跟大家聊聊有关怎样解决SpringBoot多线程处理任务无法@Autowired注入bean问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

站在用户的角度思考问题,与客户深入沟通,找到西峡网站设计与西峡网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:做网站、成都网站建设、企业官网、英文网站、手机端网站、网站推广、国际域名空间、网站空间、企业邮箱。业务覆盖西峡地区。

在多线程处理问题时,无法通过@Autowired注入bean,报空指针异常,

在线程中为了线程安全,是防注入的,如果要用到这个类,只能从bean工厂里拿个实例。

解决方法如下:

1.创建一个工具类代码:

package com.hqgd.pms.common;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;

/** * @Description: 获取bean对象的工具类 *

@Author: yaorong * @CreateDate: 2018/12/10 *

/@Componentpublic class SpringContextUtil implements ApplicationContextAware { 

 /**   * 上下文对象实例   */  private static ApplicationContext applicationContext;  

@Override  public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {    SpringContextUtil.applicationContext = applicationContext;  } 

 /**   * 获取applicationContext   *   

* @return   *

/  public static ApplicationContext getApplicationContext() {    

return applicationContext;  }  /**   

* 通过name获取 Bean.   *   * @param name   * @return   */  public static Object getBean(String name) {    return getApplicationContext().getBean(name);  }  /**   * 通过class获取Bean.   *   

* @param clazz   

* @param   * @return   */  public static T getBean(Class clazz) {    return getApplicationContext().getBean(clazz);  }  /**   

* 通过name,以及Clazz返回指定的Bean   *  

 * @param name   

* @param clazz   

* @param   * @return   

*/  public static T getBean(String name, Class clazz) {   

 return getApplicationContext().getBean(name, clazz); 

 }}

2.使用方法

@Slf4j@Servicepublic class SerialPortService {  

public static SerialPort mSerialport = null;

//  private SimpMessagingTemplate simpMessage;  

private DataAcquisitionService das;  private SystemService systemService;  private SysParamMapper sysParamMapper; 

 public SerialPortService() {    

this.das = SpringContextUtil.getBean(DataAcquisitionService.class);   

 this.systemService = SpringContextUtil.getBean(SystemService.class);    

this.sysParamMapper = SpringContextUtil.getBean(SysParamMapper.class);

  }}

以上就上有关详解SpringBoot多线程处理任务无法@Autowired注入bean问题解决的全部内容,创新互联全面介绍编程技术、操作系统、数据库、web前端技术等内容。

看完上述内容,你们对怎样解决SpringBoot多线程处理任务无法@Autowired注入bean问题有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


文章名称:怎样解决SpringBoot多线程处理任务无法@Autowired注入bean问题
标题URL:http://scyanting.com/article/poidpp.html