如何在Spring中运行预定任务?

时间:2016-01-12 07:40:38

标签: java spring scheduled-tasks

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

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

2 个答案:

答案 0 :(得分:2)

将以下内容添加到spring xml:

<task:annotation-driven/>   

创建一个类:

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

    }

这应该让你去。你可以像在任何一个spring bean一样在你的xml文件中配置有趣的bean定义。

答案 1 :(得分:0)

 <?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>