allow for overriding specific DefaultLifecycleProcessor hooks (SPR-6617)
This commit is contained in:
parent
819f4be08e
commit
431fd5bb22
|
|
@ -217,11 +217,15 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// overridable hooks
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve all applicable Lifecycle beans: all singletons that have already been created,
|
* Retrieve all applicable Lifecycle beans: all singletons that have already been created,
|
||||||
* as well as all SmartLifecycle beans (even if they are marked as lazy-init).
|
* as well as all SmartLifecycle beans (even if they are marked as lazy-init).
|
||||||
|
* @return the Map of applicable beans, with bean names as keys and bean instances as values
|
||||||
*/
|
*/
|
||||||
private Map<String, Lifecycle> getLifecycleBeans() {
|
protected Map<String, Lifecycle> getLifecycleBeans() {
|
||||||
Map<String, Lifecycle> beans = new LinkedHashMap<String, Lifecycle>();
|
Map<String, Lifecycle> beans = new LinkedHashMap<String, Lifecycle>();
|
||||||
String[] beanNames = this.beanFactory.getBeanNamesForType(Lifecycle.class, false, false);
|
String[] beanNames = this.beanFactory.getBeanNamesForType(Lifecycle.class, false, false);
|
||||||
for (String beanName : beanNames) {
|
for (String beanName : beanNames) {
|
||||||
|
|
@ -240,8 +244,17 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor
|
||||||
return beans;
|
return beans;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int getPhase(Lifecycle bean) {
|
/**
|
||||||
return (bean instanceof Phased) ? ((Phased) bean).getPhase() : 0;
|
* Determine the lifecycle phase of the given bean.
|
||||||
|
* <p>The default implementation checks for the {@link Phased} interface.
|
||||||
|
* Can be overridden to apply other/further policies.
|
||||||
|
* @param bean the bean to introspect
|
||||||
|
* @return the phase an an integer value. The suggested default is 0.
|
||||||
|
* @see Phased
|
||||||
|
* @see SmartLifecycle
|
||||||
|
*/
|
||||||
|
protected int getPhase(Lifecycle bean) {
|
||||||
|
return (bean instanceof Phased ? ((Phased) bean).getPhase() : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -318,7 +331,10 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static class LifecycleGroupMember implements Comparable<LifecycleGroupMember> {
|
/**
|
||||||
|
* Adapts the Comparable interface onto the lifecycle phase model.
|
||||||
|
*/
|
||||||
|
private class LifecycleGroupMember implements Comparable<LifecycleGroupMember> {
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
|
|
@ -332,7 +348,7 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor
|
||||||
public int compareTo(LifecycleGroupMember other) {
|
public int compareTo(LifecycleGroupMember other) {
|
||||||
int thisOrder = getPhase(this.bean);
|
int thisOrder = getPhase(this.bean);
|
||||||
int otherOrder = getPhase(other.bean);
|
int otherOrder = getPhase(other.bean);
|
||||||
return (thisOrder == otherOrder) ? 0 : (thisOrder < otherOrder) ? -1 : 1;
|
return (thisOrder == otherOrder ? 0 : (thisOrder < otherOrder) ? -1 : 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue