diff --git a/spring-all/pom.xml b/spring-all/pom.xml
index 2dc4915bab..77c7e74e08 100644
--- a/spring-all/pom.xml
+++ b/spring-all/pom.xml
@@ -155,6 +155,18 @@
org.apache.logging.log4j
log4j-core
+
+
+
+ net.javacrumbs.shedlock
+ shedlock-spring
+ 2.1.0
+
+
+ net.javacrumbs.shedlock
+ shedlock-provider-jdbc-template
+ 2.1.0
+
diff --git a/spring-all/src/main/java/org/baeldung/scheduling/shedlock/SchedulerConfiguration.java b/spring-all/src/main/java/org/baeldung/scheduling/shedlock/SchedulerConfiguration.java
new file mode 100644
index 0000000000..74ea39683d
--- /dev/null
+++ b/spring-all/src/main/java/org/baeldung/scheduling/shedlock/SchedulerConfiguration.java
@@ -0,0 +1,12 @@
+package com.baeldung.scheduling.shedlock;
+
+import org.springframework.context.annotation.Configuration;
+import net.javacrumbs.shedlock.spring.annotation.EnableSchedulerLock;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+@Configuration
+@EnableScheduling
+@EnableSchedulerLock(defaultLockAtMostFor = "PT30S")
+public class SchedulerConfiguration {
+
+}
\ No newline at end of file
diff --git a/spring-all/src/main/java/org/baeldung/scheduling/shedlock/TaskScheduler.java b/spring-all/src/main/java/org/baeldung/scheduling/shedlock/TaskScheduler.java
new file mode 100644
index 0000000000..b1b1ad921f
--- /dev/null
+++ b/spring-all/src/main/java/org/baeldung/scheduling/shedlock/TaskScheduler.java
@@ -0,0 +1,15 @@
+package com.baeldung.scheduling.shedlock;
+
+import net.javacrumbs.shedlock.core.SchedulerLock;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+@Component
+class TaskScheduler {
+
+ @Scheduled(cron = "*/15 * * * * *")
+ @SchedulerLock(name = "TaskScheduler_scheduledTask", lockAtLeastForString = "PT5M", lockAtMostForString = "PT14M")
+ public void scheduledTask() {
+ System.out.println("Running ShedLock task");
+ }
+}
\ No newline at end of file