**執行緒裡面使用註解(執行緒裡面spring使用註解無法注入值的解決辦法)**
今天在使用SSM框架(spring/springmvc/mybatis)進行開發時,自己也是第一次使用,所以遇到的問題也比較多啊·········
我今天是在一條執行緒裡面使用註解時,發現一直報空指標異常,仔細看了一下發現使用註解時並沒有注入值,所以才一直空指標異常·····
再仔細對比一下之前我自學時的程式碼,發現呼叫流程也沒有錯,搞了半天也沒找出什麼原因······
最後想了一下,我是啟動伺服器的時候,就啟動這條執行緒監聽埠了,關鍵就在這,我這個是執行緒,不是我之前熟悉的action!!!
最後才知道執行緒裡面是不能直接注入bean的,好了,不說了,直接上程式碼
第一步:寫好獲取bean的工具類
import java.util.Locale;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
/**
* 專案名稱:
* 類名: SpringContextUtil
* 描述: 獲取bean的工具類,可用於線上程裡面獲取bean
* 建立人: awsm
* 建立時間: Dec 17, 2015 10:46:44 PM
* 修改人:awsm
* 修改時間:Dec 17, 2015 10:46:44 PM
* 修改備註:
* 版本:1.0
*/
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext context = null;
/* (non Javadoc)
* @Title: setApplicationContext
* @Description: spring獲取bean工具類
* @param applicationContext
* @throws BeansException
* @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
*/
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
this.context = applicationContext;
}
public static <T> T getBean(String beanName){
return (T) context.getBean(beanName);
}
public static String getMessage(String key){
return context.getMessage(key, null, Locale.getDefault());
}
}
第二步:在spring的配置檔案裡面註冊這個工具類,我的是在spring-mybatis.xml,即spring和mybatis的整合配置檔案中。
<!-- 註冊Spring工具類 -->
<bean id="springContextUtil" class="com.kgzt.idcqzt.pub.SpringContextUtil"></bean>
第三步:線上程裡面獲取bean
/*
* 線上程中是不能直接從容器中獲取bean的,
* 需要另寫一個工具類來獲取
* */
KeepAliveService keepAliveService = SpringContextUtil.getBean("keepAliveService");
第三步就是寫線上程裡面的,是不是可以獲取到bean啦····
程式碼是參考前輩的大牛的,感謝大牛的付出!!!
相關推薦
Spring3.1完全基於註解配置@Configuration類中@Autowire無法注入問題解決
在上回介紹Spring3.1+Hibernate4.1.7基於註解配置的時候(《SpringMVC3.1+Hibernate4.1.7完全基於註解配置(零配置檔案)》)說過,在修改配置方式的時候遇到過不少問題。這裡介紹一下。 方式一 On
maven整合CXF WebService+Spring @Resource無法注入問題解決方法
筆者是一個出道不長的小碼農.工作中需要用的maven 結合jetty容器進行開發的前提背景下 廢話不多說直接上程式碼 更改前的web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns=
Spring-cloud無法正常啟動解決辦法
java 啟動方法如下 package com.example.product; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoc
**執行緒裡面使用註解(執行緒裡面spring使用註解無法注入值的解決辦法)**
今天在使用SSM框架(spring/springmvc/mybatis)進行開發時,自己也是第一次使用,所以遇到的問題也比較多啊········· 我今天是在一條執行緒裡面使用註解時,發現一直報空指標異常,仔細看了一下發現使用註解時並沒有注入值,所以才一直空指
QT多執行緒中,物件訊號與槽連線不上的解決辦法
1、在接收者建立執行緒中,把接收者移動到主執行緒中: pReceiverObj->moveToThread(QApplication::instance()->thread()); 2、這樣傳送訊號的時候,就會在主執行緒事件佇列處理中來處理了。 把connect的最
執行緒中更新視窗不能直接呼叫UpdateData函式 的解決辦法
李群會回覆於15日21點16分 LRESULT OnUpdateData(WPARAM wParam, LPARAM lParam);加到你的標頭檔案中去 tonygesong回覆於15日21點31分 1.自定義訊息: #define WM_UPDATEDA
Eclipse中Maven專案執行Maven update project 專案JRE System Library變為1.5的解決辦法
1:問題描述 Eclipse中的Maven專案,本地Java版本1.8,每次右擊專案--maven--update project(Alt+F5) 後,專案JRE System Library 都變為1.5。 2:異常原因 檢視Maven官網 如下: This i
linux關於執行編譯後命令找不到動態庫.so檔案的解決辦法。
方法一:(沒有root許可權)利用find找到報錯動態庫檔案目錄lib路徑,vim /home/xxx/.bashrc 新增一行: export LD_LIBRARY_PATH=動態庫/lib:$LD_LIBRARY_PATH 然後 source /home/xxx/.bashrc
使用Eclipse生成可執行exe檔案的操作步驟&&FatJar無法安裝問題解決方案
剛剛從C++轉到Java,eclipse的操作用起來很彆扭。最麻煩的就是沒有可執行檔案了。每次都要開啟Eclipse啟動專案。所以就想著做個exe,也方便專案使用。 說做就做,網上百度了一下,大致分兩步。第一步是打成jar包,第二步就是把jar包打成exe檔案。 1 打包jar
若要執行應用程式,您必須首先安裝 .NET Framework 4.0 解決辦法
在安裝很多程式,或者遊戲的時候會彈出這個提示視窗,這是因為電腦上缺少 .NET Framework 4.0 ,下面貼上 .NET Framework 4.0的下載地址 安裝之後即可解。 若是在
執行Tomcat出現the JRE_HOME environment variable is not defined correctly 的解決辦法
作業系統:WIN 7 x64 已經安裝了JDK1.7 和對應JRE 並設定了JAVA_HOME、JRE_HOME 但Tomcat在啟動過程中找不到 報錯資訊如下: the JRE_HOME environment variable is not defined corre
Android開發異常篇:執行工程出現:Connection with adb was interrupted錯誤提示以及解決辦法
1.[2012-10-16 10:49:35 - My First App] Android Launch! 2.[2012-10-16 10:49:35 - My First App] Co
TP5本地執行正常,線上執行某頁面出現【模板檔案不存在】問題的解決辦法
相信許多小夥伴和我一樣,明明在本地執行頁面一切正常,而到線上(本人是用的虛擬主機)出現瞭如下圖的問題: 其實這個問題出現的原因很簡單,就是我們開發是在windows 系統下,windows系統對大小寫不敏感,而虛擬主機Linux,區分大小寫,所以解決辦法很簡單,如下圖所示: 解決方法就
Spring @Value("$XXX")注入值失敗,錯誤資訊提示:Could not resolve placeholder佔位符不能被解析
問題原因: Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'wx.app.config.appid' in string value "${wx.app.config
直接new 物件 Spring 不會注入的解決方法
1.建一個類實現ApplicationContextAware介面,有一個引用ApplicationContext的靜態成員,然後,遺留系統需要引用spring管理的bean的地方,使用這個類。 package com.eliteams.quick4j.web
service手動例項化(new)導致類中的spring物件無法注入的問題解決
下面說的這個畫橫線的可能是錯誤的,因為我之前用controller繼承父類的註解物件的時候成功了,所以可能這次的唯一原因就是 不該把本該從ioc容器中拿出的物件通過new的方式例項化,至於繼承註解物件應該是可以的。 首先,如果打算用繼承,那麼父類被注入的物件是無法繼承的,手
Spring boot 無法注入service
SpringBoot專案的Bean裝配預設規則是根據Application類所在的包位置從上往下掃描! “Application類”是指SpringBoot專案入口類。這個類的位置很關鍵: 如果Appl
spring AOP中自身方法呼叫無法應用代理解決辦法
如下例: public class MyServiceImpl implements MyService { public void do(){ //the transaction annotation won't work if yo
在controller中無法通過註解@Value獲取到配置文件中定義的值解決辦法
component value wired pat lac ice rop 獲取 mvc 使用springMVC的朋友,有時候可能會遇到以下問題: 想在controller中使用@Value指定變量,但是無法得到對應的值。而在server層獲取,是正常的。解決方案:1:在s
關於在C++類裡面建立執行緒
將執行緒函式宣告為靜態函式或者友元函式,但是靜態函式只能訪問靜態成員變數,所以利用引數將this傳進函式來,就可以通過該指標訪問類成員變數和函數了。具體例子: 不多說了,直接上程式碼: lll.h #include<afxwin.h> #include<