2016-07-25 98 views
1

我工作的弹簧4 MVC和休眠 我想运行在服务器启动代码将使用从数据库中获取数据,然后做一些业务逻辑如何在spring bean初始化后运行作业?

在那里我可以把我的代码,我试图把代码

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); 
     } 

    } 

回答

2

您无法自动装配变量,因为你的类不被Spring管理。因此用@Component注释标注您的课程。

然后你就可以定义,会做你的逻辑(例如onStartup方法),并与@PostConstruct注解注释它作为这个答案解释的方法。

How to call a method after bean initialization is complete?

它将执行豆初始化后的方法。

这可能是你的类:

@Component 
    public class WebInitializer{ 
     @Autowire 
     TaskDAO task; 

     @PostConstruct 
     private void onStartup(){ 
      task.getAllTasks(); 
      // Do whatever you want 
    } 
} 
相关问题