Polishing (aligned with 6.0.x)
This commit is contained in:
		
							parent
							
								
									e26ea007fa
								
							
						
					
					
						commit
						0ce1ef97ce
					
				|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
|  * Copyright 2002-2023 the original author or authors. | ||||
|  * Copyright 2002-2024 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. | ||||
|  | @ -45,7 +45,11 @@ import org.springframework.lang.Nullable; | |||
| import org.springframework.util.Assert; | ||||
| 
 | ||||
| /** | ||||
|  * Default implementation of the {@link LifecycleProcessor} strategy. | ||||
|  * Spring's default implementation of the {@link LifecycleProcessor} strategy. | ||||
|  * | ||||
|  * <p>Provides interaction with {@link Lifecycle} and {@link SmartLifecycle} beans in | ||||
|  * groups for specific phases, on startup/shutdown as well as for explicit start/stop | ||||
|  * interactions on a {@link org.springframework.context.ConfigurableApplicationContext}. | ||||
|  * | ||||
|  * @author Mark Fisher | ||||
|  * @author Juergen Hoeller | ||||
|  | @ -145,13 +149,13 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor | |||
| 
 | ||||
| 		lifecycleBeans.forEach((beanName, bean) -> { | ||||
| 			if (!autoStartupOnly || (bean instanceof SmartLifecycle && ((SmartLifecycle) bean).isAutoStartup())) { | ||||
| 				int phase = getPhase(bean); | ||||
| 				phases.computeIfAbsent( | ||||
| 						phase, | ||||
| 						p -> new LifecycleGroup(phase, this.timeoutPerShutdownPhase, lifecycleBeans, autoStartupOnly) | ||||
| 				int startupPhase = getPhase(bean); | ||||
| 				phases.computeIfAbsent(startupPhase, | ||||
| 						phase -> new LifecycleGroup(phase, this.timeoutPerShutdownPhase, lifecycleBeans, autoStartupOnly) | ||||
| 				).add(beanName, bean); | ||||
| 			} | ||||
| 		}); | ||||
| 
 | ||||
| 		if (!phases.isEmpty()) { | ||||
| 			phases.values().forEach(LifecycleGroup::start); | ||||
| 		} | ||||
|  | @ -191,6 +195,7 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor | |||
| 	private void stopBeans() { | ||||
| 		Map<String, Lifecycle> lifecycleBeans = getLifecycleBeans(); | ||||
| 		Map<Integer, LifecycleGroup> phases = new HashMap<>(); | ||||
| 
 | ||||
| 		lifecycleBeans.forEach((beanName, bean) -> { | ||||
| 			int shutdownPhase = getPhase(bean); | ||||
| 			LifecycleGroup group = phases.get(shutdownPhase); | ||||
|  | @ -200,6 +205,7 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor | |||
| 			} | ||||
| 			group.add(beanName, bean); | ||||
| 		}); | ||||
| 
 | ||||
| 		if (!phases.isEmpty()) { | ||||
| 			List<Integer> keys = new ArrayList<>(phases.keySet()); | ||||
| 			keys.sort(Collections.reverseOrder()); | ||||
|  | @ -314,6 +320,8 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor | |||
| 	/** | ||||
| 	 * Helper class for maintaining a group of Lifecycle beans that should be started | ||||
| 	 * and stopped together based on their 'phase' value (or the default value of 0). | ||||
| 	 * The group is expected to be created in an ad-hoc fashion and group members are | ||||
| 	 * expected to always have the same 'phase' value. | ||||
| 	 */ | ||||
| 	private class LifecycleGroup { | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue