启动Spring <tasks:scheduled-tasks> </tasks:scheduled-tasks>

时间:2012-02-22 12:54:44

标签: spring

我正在尝试使用'scheduled-tasks'进行Spring Scheduling。我可以使用XmlBeanFactory加载spring上下文,并获取调度程序bean。但我不确定下一步。文档意味着任务应该自动启动 - 也许只有当我在像Tomcat这样的容器中加载上下文时?使用 XmlBeanFactory 加载时是否可以启动任务?

以下是简化的java&amp;弹簧配置。

public class SchedulingTest {
  public static void main(String[] args) throws Exception {

  Resource resource = new FileSystemResource("\\my_spring_file.xml");
  BeanFactory factory = new XmlBeanFactory(resource);

  ThreadPoolTaskScheduler scheduler = (ThreadPoolTaskScheduler) factory.getBean("myScheduler");  

  // -=-=-=-=-=      
  // NOW WHAT ?
  // -=-=-=-=-=

  }
}
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd
    http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">

<task:scheduler id="myScheduler" pool-size="10" />
<task:scheduled-tasks scheduler="myScheduler">
    <task:scheduled ref="EmailPollingTask" method="readAndProcessEmails"
        fixed-delay="30000" />
</task:scheduled-tasks>

1 个答案:

答案 0 :(得分:6)

Bean Factory仅提供ApplicationContext功能的子集。处理bean生命周期是我认为缺少的功能之一。尝试创建ApplicationContext:

ApplicationContext ctx = new FileSystemXmlApplicationContext("\\my_spring_file.xml");

我希望自动启动计划任务。