zoukankan      html  css  js  c++  java
  • Java(多)线程中注入Spring的Bean

    问题说明 : 
    今天在web应用中用到了Java多线程的技术来并发处理一些业务,但在执行时一直会报NullPointerException的错误,问题定位了一下发现是线程中的Spring bean没有被注入,bean对象的值为null。

    原因分析 :

    web容器在启动应用时,并没有提前将线程中的bean注入(在线程启动前,web容易也是无法感知的)

    解决方案 :

    线程中获取bean

    import org.springframework.context.ApplicationContext;
    
    public class ServiceFactory {
    
        public static  ApplicationContext context=null;
    
        public static Object getInstance(String serviceName){
    
            if (null==context) {
                context=ApplicationContextLoaderListener.getApplicationContext();
            }
    
            return  context.getBean(serviceName);
        }
    }
    
      @Override
      public void run() {
    
        // 记录推荐记录
        GfRegistrationService gfRegistrationService =
            (GfRegistrationService) ServiceFactory.getInstance("gfRegistrationService");
        List<GfRegistration> insertRegistrationlist = this.getGfRegistrationlist();
        if (insertRegistrationlist.size() > 0) {
          int[] resultArry = gfRegistrationService.batchInsert(insertRegistrationlist);
          if (resultArry.length > 0) {
            logger.info("信息批量记录", "批量记录信息,length= " + resultArry.length);
          } else {
    
            logger.info("信息批量记录", "推荐商户信息为空");
          }
        }
      }
  • 相关阅读:
    初拾Java(问题一:404错误,页面找不到)
    新年新气象--总结过去,展望未来
    接口测试[整理]
    [转]SVN-版本控制软件
    浅谈黑盒测试和白盒测试
    Bug管理工具的使用介绍(Bugger 2016)
    P2805/BZOJ1565 [NOI2009]植物大战僵尸
    近期学习目标
    P3643/BZOJ4584 [APIO2016]划艇
    P5344 【XR-1】逛森林
  • 原文地址:https://www.cnblogs.com/alan319/p/8549159.html
Copyright © 2011-2022 走看看