我遇到的問題是啟動(dòng)定時(shí)器,然后在跟數(shù)據(jù)庫交互的地方報(bào)錯(cuò),Exception in thread "Timer-1" java.lang.NullPointerException。后來檢查了一下是因?yàn)椋琩ataAcquisitionVoMapper沒有正常注入,原始代碼如下:
package com.hqgd.pms.controller.Timer; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.TimerTask; import javax.annotation.Resource; import com.hqgd.pms.common.SpringContextUtil; import com.hqgd.pms.dao.dataAcquisition.DataAcquisitionVoMapper; public class UpdateTableTimer extends TimerTask { @Resource private DataAcquisitionVoMapper dataAcquisitionVoMapper; // public UpdateTableTimer() {//從bean工廠里拿個(gè)實(shí)例 // this.dataAcquisitionVoMapper = SpringContextUtil.getBean(DataAcquisitionVoMapper.class); // } @Override public void run() { // 獲取當(dāng)前時(shí)間 Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MINUTE, -1460); String lastTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); Mapparam = new HashMap<>(); for (int i = 1; i <= 4; i++) { param.put("lastTime", lastTime); param.put("table", "hq_equipment_monitor_data_r" + i); dataAcquisitionVoMapper.deleter(param);//此處報(bào)空指針異常,是因?yàn)閐ataAcquisitionVoMapper沒有正常注入 } for (int i = 1; i <= 4; i++) { param.put("tabler", "hq_equipment_monitor_data_r" + i); param.put("tablef", "hq_equipment_monitor_data_f" + i); dataAcquisitionVoMapper.insertt(param); } } }
報(bào)錯(cuò)提示如下:
在線程中為了線程安全,是防注入的,如果要用到這個(gè)類,只能從bean工廠里拿個(gè)實(shí)例。和上面的代碼對(duì)比,需要添加下面框框里的代碼,就是上面代碼注釋掉的部分,
SpringContextUtil工具類的代碼如下:
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對(duì)象的工具類 * @Author: yaorong * @CreateDate: 2018/12/10 */ @Component public class SpringContextUtil implements ApplicationContextAware { /** * 上下文對(duì)象實(shí)例 */ 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); } }
好了,問題解決?。?!
小小菜鳥,如有不正確之處,請(qǐng)指正!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/74848.html
摘要:雖然本身支持定時(shí)任務(wù),但都是服務(wù)一直運(yùn)行時(shí)支持。監(jiān)聽目標(biāo)對(duì)象借助容器刷新事件來監(jiān)聽目標(biāo)對(duì)象即可,可以認(rèn)為,定時(shí)任務(wù)其實(shí)每次只是執(zhí)行一種操作而已。 在以往的 Tomcat 項(xiàng)目中,一直習(xí)慣用 Ant 打包,使用 build.xml 配置,通過 ant -buildfile 的方式在機(jī)器上執(zhí)行定時(shí)任務(wù)。雖然 Spring 本身支持定時(shí)任務(wù),但都是服務(wù)一直運(yùn)行時(shí)支持。其實(shí)在項(xiàng)目中,大多數(shù)定時(shí)...
摘要:問題描述最近通知應(yīng)用在近三個(gè)月內(nèi)出現(xiàn)過次緩存的問題,第一次在重啟之后一直沒有出現(xiàn)過問題,所以也沒有去重視,但是最近又出現(xiàn)過一次,看來很有必要徹底排查一次具體的錯(cuò)誤日志如下具體表現(xiàn)就是出現(xiàn)此異常之后連續(xù)的出現(xiàn)大量此異常 問題描述最近通知應(yīng)用在近三個(gè)月內(nèi)出現(xiàn)過2次DNS緩存的問題,第一次在重啟之后一直沒有出現(xiàn)過問題,所以也沒有去重視,但是最近又出現(xiàn)過一次,看來很有必要徹底排查一次;具體的錯(cuò)...
摘要:在任務(wù)被拒絕添加后,會(huì)調(diào)用當(dāng)前線程池的所在的線程去執(zhí)行被拒絕的任務(wù)。會(huì)讓被線程池拒絕的任務(wù)直接拋棄,不會(huì)拋異常也不會(huì)執(zhí)行。 開發(fā)技巧 equals() 方法的使用...
摘要:前言大家好,這里是從零開始學(xué)之?dāng)?shù)據(jù)類型,本文首發(fā)于公眾號(hào),歡迎前往大家關(guān)注。輸出布爾類型中的布爾類型用表示,它的值有和。若需要可空引用時(shí),布爾類型的值會(huì)被裝箱。此時(shí)程序會(huì)拋出異常最后從零開始學(xué)之?dāng)?shù)據(jù)類型到這里就結(jié)束了。 前言 大家好,這里是「從零開始學(xué) Kotlin 之『2 』數(shù)據(jù)類型」,本文首發(fā)于公眾號(hào)「Binguner」,歡迎前往大家關(guān)注。我會(huì)每周分享一些關(guān)于 Android 和...
閱讀 2787·2023-04-25 17:58
閱讀 3046·2021-11-15 11:38
閱讀 2454·2021-11-02 14:48
閱讀 1265·2021-08-25 09:40
閱讀 1902·2019-08-30 15:53
閱讀 1165·2019-08-30 15:52
閱讀 1086·2019-08-30 13:55
閱讀 2510·2019-08-29 15:21