2016-07-25 45 views
1

Ich arbeite an Spring 4 mvc und Hibernate Ich möchte Code auf dem Server Start ausgeführt wird, die erhalten Daten aus der Datenbank verwenden werden dann einige Business-Logik tunWie kann ich Jobs ausführen, nachdem Spring Beans initialisiert wurde?

wo kann ich meinen Code habe ich das setzen versucht, Code

org.springframework.web.servlet.support.AbstractDispatcherServletInitializer.onStartup(ServletContext) 

aber ich war @Autowired Variablen nicht in der Lage

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

    } 

Antwort

2

Sie sind Variablen autowire nicht in der Lage zu verwenden, da die Klasse durch die Feder nicht verwaltet wird. So kommentieren Sie Ihre Klasse mit @Component Annotation.

Dann können Sie eine Methode definieren, die Ihre Logik tun (zum Beispiel onStartup-Methode) und mit Anmerkungen versehen es mit der @PostConstruct Anmerkung wie in diesen Antworten erklärt.

How to call a method after bean initialization is complete?

Es wird das Verfahren nach der Bohnen Initialisierung auszuführen.

Dies könnte Ihre Klasse:

@Component 
    public class WebInitializer{ 
     @Autowire 
     TaskDAO task; 

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