2016-07-25 35 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 
    } 
} 
相關問題