在 spring 个 bean 初始化后,我如何 运行 个作业?

How can I run jobs after spring beans is initialized?

我正在研究 Spring 4 mvc 和休眠 我想 运行 在服务器启动时使用从数据库获取数据的代码,然后执行一些业务逻辑

我可以把我的代码放在哪里我试着把代码放在哪里

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

    }

您无法自动装配变量,因为您的 class 不受 spring 管理。所以用 @Component 注释来注释你的 class。

然后您可以定义一个方法来执行您的逻辑(例如 onStartup 方法)并使用 @PostConstruct 注释对其进行注释,如本答案中所述。

How to call a method after bean initialization is complete?

会在bean初始化后执行方法

这可能是你的 class:

    @Component
    public class WebInitializer{
      @Autowire
      TaskDAO task;

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