zoukankan      html  css  js  c++  java
  • java的nullpointerexception空指针异常,关于使用了timer定时导致service调用问题

    萌新的我谈不了原理,就发点关于我碰到这个问题是如何去解决的,

    前提是我使用了一个timer的计时器,并且调用了另外一个类中的方法(不知道这个有没有影响),

    总的来说就是调用service时报了空指针,错误信息差不了多少大概是这样的

    java.lang.NullPointerException
    at java.util.TimerThread.mainLoop(Timer.java:555)  at java.util.TimerThread.

    这个问题网上发出来的帖子还是蛮少的,但还是有多多少少的资料

    总的来说就是通过@autowired进入的service无法调用

    @Autowired
        private BoatService boatService;

    得spring容器中获取bean来使用

    由于是springboot构建的项目,通过applicationcontext.xml中获取好像是不可能的,

    下面有一个封装过的SpringContextUtil是可以直接用来getBean,直接拷入就可以使用,

    package com.example.zsxtcode.SYS_TOOL;
    
    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.stereotype.Component;
    
    @Component
    public class SpringContextUtil  implements ApplicationContextAware {
    
        /**
         * 应用环境
         */
        private static ApplicationContext applicationContext;
    
    
        /**
         *  设置环境
         */
        @Override
        public void setApplicationContext(ApplicationContext applicationContext)
                throws BeansException {
            SpringContextUtil.applicationContext = applicationContext;
        }
    
        public static ApplicationContext getApplicationContext() {
            return applicationContext;
        }
    
        /**
         * 获取对象
         */
        public static Object getBean(String beanId) throws BeansException {
            return applicationContext.getBean(beanId);
        }
    }
    SpringContextUtil

    再通过工具类中的getBean方法获取到Service对象,就可以直接用来调用了,

    BoatService boatService = (BoatService) SpringContextUtil.getBean("boatService");

    1234567.

  • 相关阅读:
    ASP.NET MVC中多种ActionResult用法总结
    jQuery中异步操作对象Deferred
    jQuery中bind方法和live方法区别解析
    深入理解Javascript中this, prototype, constructor
    SQL及常见的三种类型注释
    SQLServer的两个日期相减(间隔)datediff函数
    SQLServer查询进程与死锁语句
    SqlServer获取当前日期的详细写法
    SQL中 Decode 和 Sign 语法的简单用法
    数据仓库模型之CDM、LDM与PDM的区别
  • 原文地址:https://www.cnblogs.com/Crush123/p/12107646.html
Copyright © 2011-2022 走看看