Mit dem Spring Framework einen Scheduler ausführen

Spring bietet uns die Möglichkeit, wiederkehrende Aufgaben auszuführen. Die einfachste Variante einen Scheduler zu implementieren, die ich hier zeigen werde, ist das Ausführen eines TimerTask. Dazu implementiert man als erstes eine Klasse die von TimerTask ableitet. In der Methode run() können wir jetzt unseren Code ausführen. In diesem Beispiel lassen wir uns von Spring gleich noch ein DAO Objekt übergeben mit dem wir eine Datenbank Operation ausführen können.
public class MyTimerTask extends TimerTask
{
	private static final Log log = LogFactory.getLog(MyTimerTask.class);
	private MeinDAO meinDAO;
 
	public void run()
	{
		log.info("Starte MyTimerTask "+ new Date());
 
		// Etwas sinnvolles machen!
		meinDAO.deleteAll();
 
		log.info("Beende MyTimerTask "+ new Date());
	}
 
	public void setMeinDAO(MeinDAO meinDAO)
	{
		this.meinDAO = meinDAO;
	}
}
Jetzt müssen wir nur noch unsere applicationContext.xml um folgende Einträge erweitern.
	<bean id="myTimerTask" class="com.jgeppert.timer.MyTimerTask">
		<property name="meinDAO" ref="MeinDAO"/>
	</bean>
 
	<bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask" lazy-init="false">
		<!-- Die Startzeit nach der der TimerTask initial starten soll in Millisekunden -->
		<!-- In diesem Beispiel also nach einer Minute -->
		<property name="delay" value="60000" />
 
		<!-- Alle wieviel Millisekunden solle der Task wieder laufen -->
		<!-- In diesem Beispiel läuft der Task alle 10 Minuten -->
		<property name="period" value="600000" />
 
		<property name="timerTask" ref="myTimerTask" />
	</bean>
 
	<bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
    		<property name="scheduledTimerTasks">
	       		<list>
				<ref bean="scheduledTask" />
        		</list>
    		</property>
	</bean>
So lässt sich also auf einfache Art und Weise ein Timer mit Spring ausführen. Mehr Informationen und komplexere Beispiele mit dem Quartz Scheduler findet ihr in der Dokumentation.

1 Comment

  1. Rafael

    Ich habe das ganze mal mit Quartz durchgespielt. Ein Beispiel hierzu findet Ihr unter http://developers-blog.org/blog/default/2009/08/25/Spring-Quartz-Example.

    Grüße
    Rafael

    Reply

Leave a Reply