diff --git a/pom.xml b/pom.xml
index d084d0f7af..01cb86d103 100644
--- a/pom.xml
+++ b/pom.xml
@@ -716,7 +716,6 @@
spring-rest-simple
spring-resttemplate
spring-roo
-
spring-security-acl
spring-security-angular/server
spring-security-cache-control
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/scheduling/ScheduleJobsByProfile.java b/spring-boot-mvc/src/main/java/com/baeldung/scheduling/ScheduleJobsByProfile.java
new file mode 100644
index 0000000000..33cd44331f
--- /dev/null
+++ b/spring-boot-mvc/src/main/java/com/baeldung/scheduling/ScheduleJobsByProfile.java
@@ -0,0 +1,20 @@
+package com.baeldung.scheduling;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
+
+@Configuration
+public class ScheduleJobsByProfile {
+
+ private final static Logger LOG = LoggerFactory.getLogger(ScheduleJobsByProfile.class);
+
+ @Profile("prod")
+ @Bean
+ public ScheduledJob scheduledJob()
+ {
+ return new ScheduledJob("@Profile");
+ }
+}
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/scheduling/ScheduledJob.java b/spring-boot-mvc/src/main/java/com/baeldung/scheduling/ScheduledJob.java
new file mode 100644
index 0000000000..df7cefcd3c
--- /dev/null
+++ b/spring-boot-mvc/src/main/java/com/baeldung/scheduling/ScheduledJob.java
@@ -0,0 +1,21 @@
+package com.baeldung.scheduling;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.annotation.Scheduled;
+
+public class ScheduledJob {
+
+ private String source;
+
+ public ScheduledJob(String source) {
+ this.source = source;
+ }
+
+ private final static Logger LOG = LoggerFactory.getLogger(ScheduledJob.class);
+
+ @Scheduled(fixedDelay = 60000)
+ public void cleanTempDir() {
+ LOG.info("Cleaning temp directory via {}", source);
+ }
+}
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/scheduling/ScheduledJobsWithBoolean.java b/spring-boot-mvc/src/main/java/com/baeldung/scheduling/ScheduledJobsWithBoolean.java
new file mode 100644
index 0000000000..b03de61641
--- /dev/null
+++ b/spring-boot-mvc/src/main/java/com/baeldung/scheduling/ScheduledJobsWithBoolean.java
@@ -0,0 +1,28 @@
+package com.baeldung.scheduling;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.Scheduled;
+
+@Configuration
+public class ScheduledJobsWithBoolean {
+
+ private final static Logger LOG = LoggerFactory.getLogger(ScheduledJobsWithBoolean.class);
+
+ @Value("${jobs.enabled:true}")
+ private boolean isEnabled;
+
+ /**
+ * A scheduled job controlled via application property. The job always
+ * executes, but the logic inside is protected by a configurable boolean
+ * flag.
+ */
+ @Scheduled(fixedDelay = 60000)
+ public void cleanTempDirectory() {
+ if(isEnabled) {
+ LOG.info("Cleaning temp directory via boolean flag");
+ }
+ }
+}
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/scheduling/ScheduledJobsWithConditional.java b/spring-boot-mvc/src/main/java/com/baeldung/scheduling/ScheduledJobsWithConditional.java
new file mode 100644
index 0000000000..081c8d990a
--- /dev/null
+++ b/spring-boot-mvc/src/main/java/com/baeldung/scheduling/ScheduledJobsWithConditional.java
@@ -0,0 +1,20 @@
+package com.baeldung.scheduling;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class ScheduledJobsWithConditional
+{
+ /**
+ * This uses @ConditionalOnProperty to conditionally create a bean, which itself
+ * is a scheduled job.
+ * @return ScheduledJob
+ */
+ @Bean
+ @ConditionalOnProperty(value = "jobs.enabled", matchIfMissing = true, havingValue = "true")
+ public ScheduledJob runMyCronTask() {
+ return new ScheduledJob("@ConditionalOnProperty");
+ }
+}
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/scheduling/ScheduledJobsWithExpression.java b/spring-boot-mvc/src/main/java/com/baeldung/scheduling/ScheduledJobsWithExpression.java
new file mode 100644
index 0000000000..577a01f241
--- /dev/null
+++ b/spring-boot-mvc/src/main/java/com/baeldung/scheduling/ScheduledJobsWithExpression.java
@@ -0,0 +1,23 @@
+package com.baeldung.scheduling;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.Scheduled;
+
+@Configuration
+public class ScheduledJobsWithExpression
+{
+ private final static Logger LOG =
+ LoggerFactory.getLogger(ScheduledJobsWithExpression.class);
+
+ /**
+ * A scheduled job controlled via application property. The job always
+ * executes, but the logic inside is protected by a configurable boolean
+ * flag.
+ */
+ @Scheduled(cron = "${jobs.cronSchedule:-}")
+ public void cleanTempDirectory() {
+ LOG.info("Cleaning temp directory via placeholder");
+ }
+}
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/scheduling/SchedulingApplication.java b/spring-boot-mvc/src/main/java/com/baeldung/scheduling/SchedulingApplication.java
new file mode 100644
index 0000000000..913e2137f8
--- /dev/null
+++ b/spring-boot-mvc/src/main/java/com/baeldung/scheduling/SchedulingApplication.java
@@ -0,0 +1,16 @@
+package com.baeldung.scheduling;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+@SpringBootApplication
+@EnableScheduling
+public class SchedulingApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(SchedulingApplication.class, args);
+ }
+
+}
+