Java Spring cron 作业不起作用

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/22060996/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-13 13:18:57  来源:igfitidea点击:

Spring cron job not working

javaspringspring-mvccron

提问by xsiraul

I am newbie with Spring framework. At the moment I try to integrate cron job service.

我是 Spring 框架的新手。目前我尝试集成 cron 作业服务。

I defined a service class as:

我将一个服务类定义为:

package com.test.cron;
@Service
public class CronJob {
    protected static final Logger logger = Logger.getLogger(PasswordRemindFlusher.class);

    @Scheduled(cron="0 0/2 * * * ?")
    public void demoServiceMethod()
    {

        logger.debug("Cron job started.");
    }
}

Then I defined in servlet config:

然后我在servlet配置中定义:

<context:component-scan base-package="com.test.cron" />

spring-servlet.xml:

弹簧servlet.xml:

<?xml  version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc.xsd
    http://www.springframework.org/schema/task 
    http://www.springframework.org/schema/task/spring-task-3.0.xsd">

<context:annotation-config />

<context:component-scan base-package="com.test.cron" />
<task:annotation-driven />
</beans>

web.xml:

网页.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-servlet.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet> 
    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

Exception:

例外:

SEVERE: Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
    at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:172)

All other controllers in the same package works. I use Spring 3.1.2 framework. May I missed something?

同一个包中的所有其他控制器都可以工作。我使用 Spring 3.1.2 框架。我可能错过了什么吗?

采纳答案by Amudhan

You will need to add few things in your xml namespace and schema location. See thisguide.

您需要在 xml 命名空间和架构位置中添加一些内容。请参阅指南。

回答by Dave Syer

Did you @EnableScheduling(or the Xml equivalent)? See this guidefor more detail.

@EnableScheduling(或Xml等价物)吗?有关更多详细信息,请参阅本指南