TimerTask不是由spring管理的,所以你TimerTask内部的service也无法自动注入,2种解决办法,1、TimerTask交由spring管理;2、通过applicationContext.getBean()获取service.
我这里采取了项目启动时,使用listenr注入service。
public void contextInitialized(ServletContextEvent arg0) {
Service s = WebApplicationContextUtils
.getWebApplicationContext(arg0.getServletContext())
.getBean(S.class);
timerTask.init(s);
}