我正在开发Spring 4 mvc和hibernate 我想在服务器启动时运行代码,该代码将使用数据库中的get数据,然后执行一些业务逻辑
我可以在哪里放置代码我试图将代码放入
org.springframework.web.servlet.support.AbstractDispatcherServletInitializer.onStartup(ServletContext)
但我无法使用@Autowired变量
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Autowired
TaskDAO task;
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { SpringRootConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { SpringWebConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
task.getAllTasks()
// TODO Auto-generated method stub
super.onStartup(servletContext);
}
}
答案 0 :(得分:2)
您无法自动装配变量,因为您的课程不受春季管理。因此,请使用@Component
注释对您的班级进行注释。
然后,您可以定义一个将执行逻辑的方法(例如 onStartup 方法),并使用@PostConstruct
注释对其进行注释,如本答案中所述。
How to call a method after bean initialization is complete?
它将在bean初始化后执行该方法。
这可能是你的班级:
@Component
public class WebInitializer{
@Autowire
TaskDAO task;
@PostConstruct
private void onStartup(){
task.getAllTasks();
// Do whatever you want
}
}