diff --git a/spring-context/src/main/java/org/springframework/context/Lifecycle.java b/spring-context/src/main/java/org/springframework/context/Lifecycle.java index 16060116bb7..3cda24bbfe5 100644 --- a/spring-context/src/main/java/org/springframework/context/Lifecycle.java +++ b/spring-context/src/main/java/org/springframework/context/Lifecycle.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2018 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. @@ -34,10 +34,11 @@ package org.springframework.context; * restricting the visibility of activity-controlled components to the Lifecycle * interface. * - *
Note that the Lifecycle interface is only supported on top-level singleton - * beans. On any other component, the Lifecycle interface will remain undetected - * and hence ignored. Also, note that the extended {@link SmartLifecycle} interface - * provides integration with the application context's startup and shutdown phases. + *
Note that the present {@code Lifecycle} interface is only supported on + * top-level singleton beans. On any other component, the {@code Lifecycle} + * interface will remain undetected and hence ignored. Also, note that the extended + * {@link SmartLifecycle} interface provides sophisticated integration with the + * application context's startup and shutdown phases. * * @author Juergen Hoeller * @since 2.0 @@ -61,11 +62,12 @@ public interface Lifecycle { * Stop this component, typically in a synchronous fashion, such that the component is * fully stopped upon return of this method. Consider implementing {@link SmartLifecycle} * and its {@code stop(Runnable)} variant when asynchronous stop behavior is necessary. - *
Note that this stop notification is not guaranteed to come before destruction: On - * regular shutdown, {@code Lifecycle} beans will first receive a stop notification before - * the general destruction callbacks are being propagated; however, on hot refresh during a - * context's lifetime or on aborted refresh attempts, only destroy methods will be called. - *
Should not throw an exception if the component isn't started yet. + *
Note that this stop notification is not guaranteed to come before destruction: + * On regular shutdown, {@code Lifecycle} beans will first receive a stop notification + * before the general destruction callbacks are being propagated; however, on hot + * refresh during a context's lifetime or on aborted refresh attempts, a given bean's + * destroy method will be called without any consideration of stop signals upfront. + *
Should not throw an exception if the component is not running (not started yet). *
In the case of a container, this will propagate the stop signal to all components * that apply. * @see SmartLifecycle#stop(Runnable) diff --git a/spring-context/src/main/java/org/springframework/context/SmartLifecycle.java b/spring-context/src/main/java/org/springframework/context/SmartLifecycle.java index 1ae2c12e9de..d392c721dac 100644 --- a/spring-context/src/main/java/org/springframework/context/SmartLifecycle.java +++ b/spring-context/src/main/java/org/springframework/context/SmartLifecycle.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2018 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. @@ -23,35 +23,35 @@ package org.springframework.context; * be started at the time of a context refresh. The callback-accepting * {@link #stop(Runnable)} method is useful for objects that have an asynchronous * shutdown process. Any implementation of this interface must invoke the - * callback's run() method upon shutdown completion to avoid unnecessary delays - * in the overall ApplicationContext shutdown. + * callback's {@code run()} method upon shutdown completion to avoid unnecessary + * delays in the overall ApplicationContext shutdown. * *
This interface extends {@link Phased}, and the {@link #getPhase()} method's * return value indicates the phase within which this Lifecycle component should - * be started and stopped. The startup process begins with the lowest - * phase value and ends with the highest phase value (Integer.MIN_VALUE - * is the lowest possible, and Integer.MAX_VALUE is the highest possible). The - * shutdown process will apply the reverse order. Any components with the + * be started and stopped. The startup process begins with the lowest phase + * value and ends with the highest phase value ({@code Integer.MIN_VALUE} + * is the lowest possible, and {@code Integer.MAX_VALUE} is the highest possible). + * The shutdown process will apply the reverse order. Any components with the * same value will be arbitrarily ordered within the same phase. * - *
Example: if component B depends on component A having already started, then - * component A should have a lower phase value than component B. During the - * shutdown process, component B would be stopped before component A. + *
Example: if component B depends on component A having already started, + * then component A should have a lower phase value than component B. During + * the shutdown process, component B would be stopped before component A. * - *
Any explicit "depends-on" relationship will take precedence over - * the phase order such that the dependent bean always starts after its - * dependency and always stops before its dependency. + *
Any explicit "depends-on" relationship will take precedence over the phase + * order such that the dependent bean always starts after its dependency and + * always stops before its dependency. * - *
Any Lifecycle components within the context that do not also implement - * SmartLifecycle will be treated as if they have a phase value of 0. That - * way a SmartLifecycle implementation may start before those Lifecycle - * components if it has a negative phase value, or it may start after - * those components if it has a positive phase value. + *
Any {@code Lifecycle} components within the context that do not also + * implement {@code SmartLifecycle} will be treated as if they have a phase + * value of 0. That way a {@code SmartLifecycle} implementation may start + * before those {@code Lifecycle} components if it has a negative phase value, + * or it may start after those components if it has a positive phase value. * - *
Note that, due to the auto-startup support in SmartLifecycle, - * a SmartLifecycle bean instance will get initialized on startup of the - * application context in any case. As a consequence, the bean definition - * lazy-init flag has very limited actual effect on SmartLifecycle beans. + *
Note that, due to the auto-startup support in {@code SmartLifecycle}, a
+ * {@code SmartLifecycle} bean instance will usually get initialized on startup
+ * of the application context in any case. As a consequence, the bean definition
+ * lazy-init flag has very limited actual effect on {@code SmartLifecycle} beans.
*
* @author Mark Fisher
* @since 3.0
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 174496e9c4a..6775937da52 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
@@ -187,11 +187,11 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor
Map The default implementation checks for the {@link Phased} interface.
- * Can be overridden to apply other/further policies.
+ * The default implementation checks for the {@link Phased} interface, using
+ * a default of 0 otherwise. Can be overridden to apply other/further policies.
* @param bean the bean to introspect
- * @return the phase an integer value. The suggested default is 0.
- * @see Phased
+ * @return the phase (an integer value)
+ * @see Phased#getPhase()
* @see SmartLifecycle
*/
protected int getPhase(Lifecycle bean) {
@@ -402,9 +402,9 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor
@Override
public int compareTo(LifecycleGroupMember other) {
- int thisOrder = getPhase(this.bean);
- int otherOrder = getPhase(other.bean);
- return (thisOrder == otherOrder ? 0 : (thisOrder < otherOrder) ? -1 : 1);
+ int thisPhase = getPhase(this.bean);
+ int otherPhase = getPhase(other.bean);
+ return (thisPhase == otherPhase ? 0 : (thisPhase < otherPhase) ? -1 : 1);
}
}
diff --git a/spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistry.java b/spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistry.java
index 4d48fb31fed..56c211cea37 100644
--- a/spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistry.java
+++ b/spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistry.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2016 the original author or authors.
+ * Copyright 2002-2018 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.
@@ -100,8 +100,8 @@ public class JmsListenerEndpointRegistry implements DisposableBean, SmartLifecyc
/**
* Return the ids of the managed {@link MessageListenerContainer} instance(s).
- * @see #getListenerContainer(String)
* @since 4.2.3
+ * @see #getListenerContainer(String)
*/
public Set