728x90
spring 2.5 task scheduler
1. Scheduler Task
Create a scheduler task…
package com.mkyong.common;
public class RunMeTask
{
public void printMe() {
System.out.println("Run Me ~");
}
}
public class RunMeTask
{
public void printMe() {
System.out.println("Run Me ~");
}
}
<bean id="runMeTask" class="com.mkyong.common.RunMeTask" />
Spring comes with a MethodInvokingTimerTaskFactoryBean as a replacement for the JDK TimerTask. You can define your target scheduler object and method to call here.
<bean id="schedulerTask"
class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean"><property name="targetObject" ref="runMeTask" /><property name="targetMethod" value="printMe" /></bean>
class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean"><property name="targetObject" ref="runMeTask" /><property name="targetMethod" value="printMe" /></bean>
Spring comes with a ScheduledTimerTask as a replacement for the JDK Timer. You can pass your scheduler name, delay and period here.
<bean id="timerTask"
class="org.springframework.scheduling.timer.ScheduledTimerTask"><property name="timerTask" ref="schedulerTask" /><property name="delay" value="1000" /><property name="period" value="60000" /></bean>
class="org.springframework.scheduling.timer.ScheduledTimerTask"><property name="timerTask" ref="schedulerTask" /><property name="delay" value="1000" /><property name="period" value="60000" /></bean>
2. TimerFactoryBean
In last, you can configure a TimerFactoryBean bean to start your scheduler task.
<bean class="org.springframework.scheduling.timer.TimerFactoryBean"><property name="scheduledTimerTasks"><list><ref local="timerTask" /></list></property></bean>
File : Spring-Scheduler.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans"
http://www.springframework.org/schema/beans" id="schedulerTask"
class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean"><property name="targetObject" ref="runMeTask" /><property name="targetMethod" value="printMe" /></bean><bean id="runMeTask" class="com.mkyong.common.RunMeTask" /><bean id="timerTask"
class="org.springframework.scheduling.timer.ScheduledTimerTask"><property name="timerTask" ref="schedulerTask" /><property name="delay" value="1000" /><property name="period" value="60000" /></bean><bean class="org.springframework.scheduling.timer.TimerFactoryBean"><property name="scheduledTimerTasks"><list><ref local="timerTask" /></list></property></bean></beans>
xmlns:xsi="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans"
http://www.springframework.org/schema/beans" id="schedulerTask"
class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean"><property name="targetObject" ref="runMeTask" /><property name="targetMethod" value="printMe" /></bean><bean id="runMeTask" class="com.mkyong.common.RunMeTask" /><bean id="timerTask"
class="org.springframework.scheduling.timer.ScheduledTimerTask"><property name="timerTask" ref="schedulerTask" /><property name="delay" value="1000" /><property name="period" value="60000" /></bean><bean class="org.springframework.scheduling.timer.TimerFactoryBean"><property name="scheduledTimerTasks"><list><ref local="timerTask" /></list></property></bean></beans>
Run it
package com.mkyong.common;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App
{
public static void main( String[] args )
{
ApplicationContext context =
new ClassPathXmlApplicationContext("Spring-Scheduler.xml");
}
}
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App
{
public static void main( String[] args )
{
ApplicationContext context =
new ClassPathXmlApplicationContext("Spring-Scheduler.xml");
}
}
No code need to call the scheduler task, the TimerFactoryBean will run your schedule task during start up. As result, Spring scheduler will run the printMe() method every 60 seconds, with a 1 second delay for the first time of execution.
728x90
'Spring' 카테고리의 다른 글
전자정부 암호화/복호화 Encryption / Decryption (0) | 2015.10.07 |
---|---|
전자정부표준프레임워크 암호화 aria (0) | 2015.10.07 |
[Spring] AOP를 이용한 속도 측정 (0) | 2015.10.07 |
spring bean 객체 얻어오기 (0) | 2015.10.07 |
Spring 다국어 변경 (0) | 2015.10.07 |