Merge pull request #59 from mgooty/master

Added example code for usage and configuration of @Scheduled annotation.
This commit is contained in:
Eugen 2014-10-19 20:44:53 +03:00
commit bf8bc8be97
6 changed files with 114 additions and 2 deletions

View File

@ -33,7 +33,7 @@
</dependency> </dependency>
<!-- persistence --> <!-- persistence -->
<dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId> <artifactId>hibernate-core</artifactId>
@ -118,7 +118,6 @@
<version>${mockito.version}</version> <version>${mockito.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -0,0 +1,52 @@
package org.baeldung.scheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledAnnotationExample {
@Scheduled(fixedDelay = 1000)
public void scheduleFixedDelayTask() {
System.out.println("Fixed delay task - " + System.currentTimeMillis() / 1000);
}
@Scheduled(fixedDelayString = "${fixedDelay.in.milliseconds}")
public void scheduleFixedDelayTaskUsingExpression() {
System.out.println("Fixed delay task - " + System.currentTimeMillis() / 1000);
}
@Scheduled(fixedDelay = 1000, initialDelay = 2000)
public void scheduleFixedDelayWithInitialDelayTask() {
System.out.println("Fixed delay task with one second initial delay - " + System.currentTimeMillis() / 1000);
}
@Scheduled(fixedRate = 1000)
public void scheduleFixedRateTask() {
System.out.println("Fixed rate task - " + System.currentTimeMillis() / 1000);
}
@Scheduled(fixedRateString = "${fixedRate.in.milliseconds}")
public void scheduleFixedRateTaskUsingExpression() {
System.out.println("Fixed rate task - " + System.currentTimeMillis() / 1000);
}
@Scheduled(fixedDelay = 1000, initialDelay = 100)
public void scheduleFixedRateWithInitialDelayTask() {
System.out.println("Fixed delay task with one second initial delay - " + System.currentTimeMillis() / 1000);
}
/**
* Scheduled task is executed at 10:15 AM on the 15th day of every month
*/
@Scheduled(cron = "0 15 10 15 * ?")
public void scheduleTaskUsingCronExpression() {
System.out.println("schedule tasks using cron expressions - " + System.currentTimeMillis() / 1000);
}
@Scheduled(cron = "${cron.expression}")
public void scheduleTaskUsingExternalizedCronExpression() {
System.out.println("schedule tasks using externalized cron expressions - " + System.currentTimeMillis() / 1000);
}
}

View File

@ -0,0 +1,20 @@
package org.baeldung.scheduling;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.scheduling.annotation.EnableScheduling;
@Configuration
@EnableScheduling
@ComponentScan("com.baeldung.spring.integration")
@PropertySource("classpath:springIntegration.properties")
public class SpringSchedulingConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:task="http://www.springframework.org/schema/task" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
<!-- Configure the scheduler -->
<task:scheduler id="myScheduler" pool-size="10" />
<bean id="myscheduler" name="myscheduler"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler">
</bean>
<!-- Configure the fixedDealy, fixedRate or cron based schduled tasks -->
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="beanA" method="methodA" fixed-delay="5000" initial-delay="1000" />
<task:scheduled ref="beanB" method="methodB" fixed-rate="5000" />
<task:scheduled ref="beanC" method="methodC" cron="*/5 * * * * MON-FRI" />
</task:scheduled-tasks>
</beans>

View File

@ -0,0 +1,3 @@
cron.expression=0 15 10 15 * ?
fixedRate.in.millisecons=1000
fixedDelay.in.millisecons=1000

View File

@ -0,0 +1,18 @@
package org.baeldung.scheduling;
import org.baeldung.scheduling.SpringSchedulingConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SpringSchedulingConfig.class }, loader = AnnotationConfigContextLoader.class)
public class ScheduledAnnotationExampleTest {
@Test
public void testScheduledAnnotation() throws InterruptedException {
Thread.sleep(20000);
}
}