Skip to content

Commit 3576ff0

Browse files
committed
ScheduledAnnotationBeanPostProcessor properly registers multiple tasks per bean
Issue: SPR-14286
1 parent 24f5f36 commit 3576ff0

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -302,8 +302,11 @@ protected void processScheduled(Scheduled scheduled, Method method, Object bean)
302302
String errorMessage =
303303
"Exactly one of the 'cron', 'fixedDelay(String)', or 'fixedRate(String)' attributes is required";
304304

305-
Set<ScheduledTask> tasks =
306-
new LinkedHashSet<ScheduledTask>(4);
305+
Set<ScheduledTask> tasks = this.scheduledTasks.get(bean);
306+
if (tasks == null) {
307+
tasks = new LinkedHashSet<ScheduledTask>(4);
308+
this.scheduledTasks.put(bean, tasks);
309+
}
307310

308311
// Determine initial delay
309312
long initialDelay = scheduled.initialDelay();
@@ -397,7 +400,6 @@ protected void processScheduled(Scheduled scheduled, Method method, Object bean)
397400

398401
// Check whether we had any attribute set
399402
Assert.isTrue(processedSchedule, errorMessage);
400-
this.scheduledTasks.put(bean, tasks);
401403
}
402404
catch (IllegalArgumentException ex) {
403405
throw new IllegalStateException(

0 commit comments

Comments
 (0)