Я работаю над SpringFrameWork и MySQL.SpringFrameWork Injected bean is null?
Я проверил и проверил связь между DB и каркасом. Проблема заключается в том, что я использую Injected bean в классе, который расширяет Thread, так или иначе 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;
}
И ниже класс 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]2
".
И Lower один
"INFO : org.owls.iis.daemon.IISDaemon - svc bean : null
"
Спасибо за ваши советы заранее: D
Благодарим за консультацию. Но форма, которую я хочу в финальной версии, немного отличается. «IISDaemon» должен начинаться немедленно по мере запуска WAS. И ему нужно получить доступ к базе данных (именно поэтому я внедряю класс обслуживания в демон.). –
Итак, я добавил IISDaemon в качестве компонента в корневом контексте (например, ваше первое предложение.) И из-за цели (как я добавил комментарий) я поместил init-method = "start". Поэтому мое решение выглядит как . И это все еще не работает. Спасибо, но можете ли вы предложить другие идеи? : D Еще раз спасибо –
Oh. сообщение об ошибке по-прежнему показывает, что bean-файл IISSvcImpl имеет значение «null». –