From 8e8c3f5a7c86796e65282776012c6bbb9706d76c Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 7 Jul 2023 13:14:40 +0200 Subject: [PATCH] Polishing --- .../support/DefaultListableBeanFactory.java | 2 +- .../context/support/DefaultLifecycleProcessor.java | 2 +- .../concurrent/ExecutorConfigurationSupport.java | 12 ++++++++---- .../scheduling/annotation/EnableAsyncTests.java | 14 ++++++-------- .../annotation/EnableSchedulingTests.java | 4 ++-- .../listener/AbstractJmsListeningContainer.java | 13 +++++++------ 6 files changed, 25 insertions(+), 22 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java index baa50d9566..6df2757ab9 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java @@ -979,7 +979,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto for (String beanName : beanNames) { Object singletonInstance = getSingleton(beanName); if (singletonInstance instanceof SmartInitializingSingleton smartSingleton) { - StartupStep smartInitialize = this.getApplicationStartup().start("spring.beans.smart-initialize") + StartupStep smartInitialize = getApplicationStartup().start("spring.beans.smart-initialize") .tag("beanName", beanName); smartSingleton.afterSingletonsInstantiated(); smartInitialize.end(); diff --git a/spring-context/src/main/java/org/springframework/context/support/DefaultLifecycleProcessor.java b/spring-context/src/main/java/org/springframework/context/support/DefaultLifecycleProcessor.java index 5c57b1c865..3198e103c7 100644 --- a/spring-context/src/main/java/org/springframework/context/support/DefaultLifecycleProcessor.java +++ b/spring-context/src/main/java/org/springframework/context/support/DefaultLifecycleProcessor.java @@ -66,7 +66,7 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor /** * Specify the maximum time allotted in milliseconds for the shutdown of * any phase (group of SmartLifecycle beans with the same 'phase' value). - *

The default value is 30 seconds. + *

The default value is 30000 milliseconds (30 seconds). */ public void setTimeoutPerShutdownPhase(long timeoutPerShutdownPhase) { this.timeoutPerShutdownPhase = timeoutPerShutdownPhase; diff --git a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ExecutorConfigurationSupport.java b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ExecutorConfigurationSupport.java index 55ca08ed9b..ae4d3a1e34 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ExecutorConfigurationSupport.java +++ b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ExecutorConfigurationSupport.java @@ -108,9 +108,9 @@ public abstract class ExecutorConfigurationSupport extends CustomizableThreadFac /** * Set whether to wait for scheduled tasks to complete on shutdown, * not interrupting running tasks and executing all tasks in the queue. - *

Default is "false", shutting down immediately through interrupting - * ongoing tasks and clearing the queue. Switch this flag to "true" if you - * prefer fully completed tasks at the expense of a longer shutdown phase. + *

Default is {@code false}, shutting down immediately through interrupting + * ongoing tasks and clearing the queue. Switch this flag to {@code true} if + * you prefer fully completed tasks at the expense of a longer shutdown phase. *

Note that Spring's container shutdown continues while ongoing tasks * are being completed. If you want this executor to block and wait for the * termination of tasks before the rest of the container continues to shut @@ -211,9 +211,13 @@ public abstract class ExecutorConfigurationSupport extends CustomizableThreadFac } /** - * Perform a shutdown on the underlying ExecutorService. + * Perform a full shutdown on the underlying ExecutorService, + * according to the corresponding configuration settings. + * @see #setWaitForTasksToCompleteOnShutdown + * @see #setAwaitTerminationMillis * @see java.util.concurrent.ExecutorService#shutdown() * @see java.util.concurrent.ExecutorService#shutdownNow() + * @see java.util.concurrent.ExecutorService#awaitTermination */ public void shutdown() { if (logger.isDebugEnabled()) { diff --git a/spring-context/src/test/java/org/springframework/scheduling/annotation/EnableAsyncTests.java b/spring-context/src/test/java/org/springframework/scheduling/annotation/EnableAsyncTests.java index 3514da3346..40d79675b2 100644 --- a/spring-context/src/test/java/org/springframework/scheduling/annotation/EnableAsyncTests.java +++ b/spring-context/src/test/java/org/springframework/scheduling/annotation/EnableAsyncTests.java @@ -96,9 +96,8 @@ public class EnableAsyncTests { public void properExceptionForExistingProxyDependencyMismatch() { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); ctx.register(AsyncConfig.class, AsyncBeanWithInterface.class, AsyncBeanUser.class); - assertThatExceptionOfType(UnsatisfiedDependencyException.class).isThrownBy( - ctx::refresh) - .withCauseInstanceOf(BeanNotOfRequiredTypeException.class); + assertThatExceptionOfType(UnsatisfiedDependencyException.class).isThrownBy(ctx::refresh) + .withCauseInstanceOf(BeanNotOfRequiredTypeException.class); ctx.close(); } @@ -106,9 +105,8 @@ public class EnableAsyncTests { public void properExceptionForResolvedProxyDependencyMismatch() { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); ctx.register(AsyncConfig.class, AsyncBeanUser.class, AsyncBeanWithInterface.class); - assertThatExceptionOfType(UnsatisfiedDependencyException.class).isThrownBy( - ctx::refresh) - .withCauseInstanceOf(BeanNotOfRequiredTypeException.class); + assertThatExceptionOfType(UnsatisfiedDependencyException.class).isThrownBy(ctx::refresh) + .withCauseInstanceOf(BeanNotOfRequiredTypeException.class); ctx.close(); } @@ -208,8 +206,7 @@ public class EnableAsyncTests { @SuppressWarnings("resource") AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); ctx.register(AspectJAsyncAnnotationConfig.class); - assertThatExceptionOfType(BeanDefinitionStoreException.class).isThrownBy( - ctx::refresh); + assertThatExceptionOfType(BeanDefinitionStoreException.class).isThrownBy(ctx::refresh); } @Test @@ -521,6 +518,7 @@ public class EnableAsyncTests { } } + @Configuration @EnableAsync static class AsyncWithExecutorQualifiedByExpressionConfig { diff --git a/spring-context/src/test/java/org/springframework/scheduling/annotation/EnableSchedulingTests.java b/spring-context/src/test/java/org/springframework/scheduling/annotation/EnableSchedulingTests.java index b87abbe704..08a44180af 100644 --- a/spring-context/src/test/java/org/springframework/scheduling/annotation/EnableSchedulingTests.java +++ b/spring-context/src/test/java/org/springframework/scheduling/annotation/EnableSchedulingTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -89,7 +89,7 @@ public class EnableSchedulingTests { assertThat(ctx.getBean(AtomicInteger.class).get()).isGreaterThanOrEqualTo(10); assertThat(ctx.getBean(ExplicitSchedulerConfig.class).threadName).startsWith("explicitScheduler-"); assertThat(Arrays.asList(ctx.getDefaultListableBeanFactory().getDependentBeans("myTaskScheduler")).contains( - TaskManagementConfigUtils.SCHEDULED_ANNOTATION_PROCESSOR_BEAN_NAME)).isTrue(); + TaskManagementConfigUtils.SCHEDULED_ANNOTATION_PROCESSOR_BEAN_NAME)).isTrue(); } @Test diff --git a/spring-jms/src/main/java/org/springframework/jms/listener/AbstractJmsListeningContainer.java b/spring-jms/src/main/java/org/springframework/jms/listener/AbstractJmsListeningContainer.java index 3e30e59788..104f98e79d 100644 --- a/spring-jms/src/main/java/org/springframework/jms/listener/AbstractJmsListeningContainer.java +++ b/spring-jms/src/main/java/org/springframework/jms/listener/AbstractJmsListeningContainer.java @@ -125,18 +125,19 @@ public abstract class AbstractJmsListeningContainer extends JmsDestinationAccess } /** - * Specify the phase in which this container should be started and - * stopped. The startup order proceeds from lowest to highest, and - * the shutdown order is the reverse of that. By default this value - * is Integer.MAX_VALUE meaning that this container starts as late - * as possible and stops as soon as possible. + * Specify the lifecycle phase in which this container should be started and stopped. + *

The startup order proceeds from lowest to highest, and the shutdown order + * is the reverse of that. The default is {@link #DEFAULT_PHASE} meaning that + * this container starts as late as possible and stops as soon as possible. + * @see SmartLifecycle#getPhase() */ public void setPhase(int phase) { this.phase = phase; } /** - * Return the phase in which this container will be started and stopped. + * Return the lifecycle phase in which this container will be started and stopped. + * @see #setPhase */ @Override public int getPhase() {