我正在使用SpringFrameWork和MySQL。SpringFrameWork注入的bean是否爲空?
我做了一些測試和DB和框架之間的溝通工作正常。 問題是當我使用擴展線程的類中的Injected bean時,某種方式bean變爲null。我不知道爲什麼。
下面是我的Spring控制器創建線程擴展對象('IISDaemon')的一部分。
@RequestMapping("/list")
public ModelAndView list(
@RequestParam(value="page_no", defaultValue="1") Integer page_no)
throws Exception{
log.info("Manager called Web page. page no : " + page_no);
ModelAndView mav = new ModelAndView();
//test
log.info("svc bean : " + svc);
IISDaemon daemon = new IISDaemon();
daemon.start();
//
mav.setViewName("/iis/list");
mav.addObject("list", svc.list(page_no));
return mav;
}
而下面是Class IISDaemon。
public class IISDaemon extends Thread {
private Logger log = Logger.getLogger(getClass());
@Inject
IISSVCImpl svc;
@Override
public void run() {
log.info("Daemon starts.");
ArrayList<IISVO> list = new ArrayList<IISVO>();
try{
log.info("svc bean : " + svc);
list = (ArrayList<IISVO>)svc.jobList(1);
for(IISVO vo : list){
this.sleep(5000);
log.info(vo);
}
}catch(Exception e){e.printStackTrace();}
}
};
如您所見,我在每個班級打印2個日誌。 上面一個是
「INFO : org.owls.iis.IISMgrController - svc bean : [email protected]
」。
和較低的一個是
「INFO : org.owls.iis.daemon.IISDaemon - svc bean : null
」
提前謝謝你的建議:d
感謝您的諮詢。但是我想要的最終版本中的表格有點不同。 'IISDaemon'應該在WAS啓動時立即啓動。它需要訪問數據庫(這就是爲什麼我在守護進程中注入服務類)。 –
所以我在根上下文中添加了IISDaemon作爲一個bean(就像你的第一句話)。並且由於目的(我添加了評論),我把init-method =「start」。所以我的解決方案看起來像 。它仍然不起作用。謝謝,但你能提出其他想法嗎? :D再次感謝 –
哦。錯誤消息仍顯示IISSvcImpl bean爲'null'。 –