如何在Spring中运行计划任务?

How to run scheduled tasks in Spring?

我正在寻找有关如何 运行 在 spring 中安排任务的示例。我目前正在使用 xml 配置和 spring 3.2。我找到了他们的计划任务文档页面,但想要一个更简单的示例来开始。 Here is a link to the docs

我在哪里配置调度 bean?我希望他们每天 运行,一次只完成一项任务。

将以下内容添加到您的 spring xml 中:

<task:annotation-driven/>   

创建 class :

import javax.inject.Named;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;

@Named("funBean")
public class FunBean {

        private static final Logger slf4jLogger = LoggerFactory.getLogger(FunBean.class);

         @Scheduled(fixedDelay = 5000)
        public void doSomething() {
            slf4jLogger.info("I am working");
        }

    }

这应该让你 going.You 可以在你的 xml 文件中配置有趣的 bean 定义,就像任何 spring bean 一样。

 <?xml version="1.0" encoding="UTF-8"?>

 <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">

    <bean id="worker" class="net.bitegroup.smart.Worker">
    </bean>

    <bean id="scheduledTask" class="org.springframework.scheduling.concurrent.ScheduledExecutorTask">
        <property name="delay" value="1000" />
        <property name="period" value="2000" />
        <property name="runnable" ref="worker" />
    </bean>

    <bean id="scheduledThread" class="org.springframework.scheduling.concurrent.ScheduledExecutorFactoryBean">
        <property name="scheduledExecutorTasks" ref="scheduledTask" />
    </bean>
</beans>