2016-07-25 8 views
1

私は春の4 MVCに取り組んで、私はいくつかのビジネスロジックに私は自分のコードを置くことができ、私は入れてみましたSpring Beanの初期化後にジョブを実行するにはどうすればよいですか?

を行い、その後、データベースから取得したデータを使用するサーバーの起動時にコードを実行したい を休止していますコード

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

が、私はあなたのクラスは、スプリングによって管理されていないので、あなたは、変数をautowireすることができません@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

を使用することができませんでした。あなたのクラスに@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 
    } 
} 
関連する問題