Avoid early initializations for reactive support
This commit flags the `BeanPostProcessor` registered by the reactive embedded support as `synthetic` so that it doesn't trigger an early initialization of other components. See gh-8467
This commit is contained in:
parent
36d6ab41a2
commit
546338ac80
|
|
@ -84,9 +84,11 @@ public class ReactiveWebServerAutoConfiguration {
|
|||
}
|
||||
if (ObjectUtils.isEmpty(this.beanFactory.getBeanNamesForType(
|
||||
ReactiveWebServerCustomizerBeanPostProcessor.class, true, false))) {
|
||||
RootBeanDefinition beanDefinition = new RootBeanDefinition(
|
||||
ReactiveWebServerCustomizerBeanPostProcessor.class);
|
||||
beanDefinition.setSynthetic(true);
|
||||
registry.registerBeanDefinition(
|
||||
"reactiveWebServerCustomizerBeanPostProcessor",
|
||||
new RootBeanDefinition(ReactiveWebServerCustomizerBeanPostProcessor.class));
|
||||
"reactiveWebServerCustomizerBeanPostProcessor", beanDefinition);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,29 +22,30 @@ import java.util.Collections;
|
|||
import java.util.List;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.BeanFactory;
|
||||
import org.springframework.beans.factory.BeanFactoryAware;
|
||||
import org.springframework.beans.factory.ListableBeanFactory;
|
||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.core.annotation.AnnotationAwareOrderComparator;
|
||||
|
||||
/**
|
||||
* {@link BeanPostProcessor} that applies all {@link ReactiveWebServerCustomizer}s
|
||||
* from the bean factory to {@link ConfigurableReactiveWebServer} beans.
|
||||
*
|
||||
*
|
||||
* @author Brian Clozel
|
||||
* @author Stephane Nicoll
|
||||
* @since 2.0.0
|
||||
*/
|
||||
public class ReactiveWebServerCustomizerBeanPostProcessor
|
||||
implements BeanPostProcessor, ApplicationContextAware {
|
||||
implements BeanPostProcessor, BeanFactoryAware {
|
||||
|
||||
private ApplicationContext applicationContext;
|
||||
private ListableBeanFactory beanFactory;
|
||||
|
||||
private List<ReactiveWebServerCustomizer> customizers;
|
||||
|
||||
@Override
|
||||
public void setApplicationContext(ApplicationContext applicationContext)
|
||||
throws BeansException {
|
||||
this.applicationContext = applicationContext;
|
||||
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
|
||||
this.beanFactory = (ListableBeanFactory) beanFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -73,7 +74,7 @@ public class ReactiveWebServerCustomizerBeanPostProcessor
|
|||
if (this.customizers == null) {
|
||||
// Look up does not include the parent context
|
||||
this.customizers = new ArrayList<ReactiveWebServerCustomizer>(
|
||||
this.applicationContext
|
||||
this.beanFactory
|
||||
.getBeansOfType(ReactiveWebServerCustomizer.class,
|
||||
false, false)
|
||||
.values());
|
||||
|
|
|
|||
Loading…
Reference in New Issue