• 解决Spring在线程中注入为空指针的问题


    在启用线程中使用来jdbcTemplate来查询数据库,引入jdbcTemplate是用Spring  @Autowired注解  方式引入,但是在运行中 jdbcTemplate 总是 空指针

    解决方法:

    定义一个静态获取Bean的类

    @Component
    public class SpringUtils implements ApplicationContextAware{  
        //Spring应用上下文环境
        private static ApplicationContext applicationContext;  
        /**
         * 实现ApplicationContextAware接口的回调方法,设置上下文环境
         */
        public void setApplicationContext(ApplicationContext applicationContext)  
                throws BeansException {  
            this.applicationContext = applicationContext;  
        }  
      
        public static ApplicationContext getApplicationContext(){  
            return applicationContext;  
        }  
          /**
         * 获取对象 这里重写了bean方法,起主要作用
         */
        public static Object getBean(String name) throws BeansException{  
            return applicationContext.getBean(name);  
        }  
    }

    线程类这样写:

    public class MyTread extends Thread{
            //不要使用 @Autowired
        private JdbcTemplate jdbcTemplate;
        public void run()  
        {  
            this.jdbcTemplate=  SpringUtils.getApplicationContext().getBean(JdbcTemplate.class); 
           while(true){
                ArrayList res = (ArrayList).this.jdbcTemplate.queryForList("写自己的sql语句");
                //延时功能
                try {
                    //延时两秒
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
           } 
        }
    }
  • 相关阅读:
    自签证书的创建与导入
    Linux常用命令
    JS数据类型
    call和apply
    css浮动Float
    vue 列表进入详情后,返回保持原位置
    vue-cli2升级为vue-cli3
    html2canvas使用中的小问题
    jquery点击空白处关闭弹窗
    template.js中template模板中onclick传参
  • 原文地址:https://www.cnblogs.com/guoyinli/p/7152517.html
Copyright © 2020-2023  润新知