Polish "Migrate ApplicationContext to common hierarchy"
Users calling the methods will still face problems but at least they will have some guidance. Closes gh-16096
This commit is contained in:
committed by
Stephane Nicoll
parent
c432288ed1
commit
8626a33bbb
@@ -16,10 +16,17 @@
|
||||
|
||||
package org.springframework.boot.web.reactive.context;
|
||||
|
||||
import org.springframework.beans.factory.support.BeanNameGenerator;
|
||||
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
||||
import org.springframework.context.annotation.AnnotatedBeanDefinitionReader;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.context.annotation.ClassPathBeanDefinitionScanner;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.ImportResource;
|
||||
import org.springframework.context.annotation.ScopeMetadataResolver;
|
||||
import org.springframework.core.env.ConfigurableEnvironment;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
@@ -35,6 +42,7 @@ import org.springframework.stereotype.Component;
|
||||
* to deliberately override certain bean definitions via an extra Configuration class.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Stephane Nicoll
|
||||
* @since 2.0.0
|
||||
* @see AnnotationConfigApplicationContext
|
||||
*/
|
||||
@@ -42,6 +50,46 @@ public class AnnotationConfigReactiveWebApplicationContext
|
||||
extends AnnotationConfigApplicationContext
|
||||
implements ConfigurableReactiveWebApplicationContext {
|
||||
|
||||
/**
|
||||
* Create a new AnnotationConfigReactiveWebApplicationContext that needs to be
|
||||
* populated through {@link #register} calls and then manually {@linkplain #refresh
|
||||
* refreshed}.
|
||||
*/
|
||||
public AnnotationConfigReactiveWebApplicationContext() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new AnnotationConfigApplicationContext with the given
|
||||
* DefaultListableBeanFactory.
|
||||
* @param beanFactory the DefaultListableBeanFactory instance to use for this context
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public AnnotationConfigReactiveWebApplicationContext(
|
||||
DefaultListableBeanFactory beanFactory) {
|
||||
super(beanFactory);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new AnnotationConfigApplicationContext, deriving bean definitions from the
|
||||
* given annotated classes and automatically refreshing the context.
|
||||
* @param annotatedClasses one or more annotated classes, e.g.
|
||||
* {@link Configuration @Configuration} classes
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public AnnotationConfigReactiveWebApplicationContext(Class<?>... annotatedClasses) {
|
||||
super(annotatedClasses);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new AnnotationConfigApplicationContext, scanning for bean definitions in
|
||||
* the given packages and automatically refreshing the context.
|
||||
* @param basePackages the packages to check for annotated classes
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public AnnotationConfigReactiveWebApplicationContext(String... basePackages) {
|
||||
super(basePackages);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ConfigurableEnvironment createEnvironment() {
|
||||
return new StandardReactiveWebEnvironment();
|
||||
@@ -53,4 +101,232 @@ public class AnnotationConfigReactiveWebApplicationContext
|
||||
return new FilteredReactiveWebContextResource(path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the custom {@link BeanNameGenerator} for use with
|
||||
* {@link AnnotatedBeanDefinitionReader} and/or
|
||||
* {@link ClassPathBeanDefinitionScanner}, if any.
|
||||
* @return the bean name generator
|
||||
* @deprecated since 2.2.0 since this class no longer extends
|
||||
* {@code AbstractRefreshableConfigApplicationContext}
|
||||
*/
|
||||
@Deprecated
|
||||
protected final BeanNameGenerator getBeanNameGenerator() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the custom {@link ScopeMetadataResolver} for use with
|
||||
* {@link AnnotatedBeanDefinitionReader} and/or
|
||||
* {@link ClassPathBeanDefinitionScanner}, if any.
|
||||
* @return the scope metadata resolver
|
||||
* @deprecated since 2.2.0 since this class no longer extends
|
||||
* {@code AbstractRefreshableConfigApplicationContext}
|
||||
*/
|
||||
@Deprecated
|
||||
protected ScopeMetadataResolver getScopeMetadataResolver() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a {@link org.springframework.beans.factory.config.BeanDefinition} for any
|
||||
* classes specified by {@link #register(Class...)} and scan any packages specified by
|
||||
* {@link #scan(String...)}.
|
||||
* <p>
|
||||
* For any values specified by {@link #setConfigLocation(String)} or
|
||||
* {@link #setConfigLocations(String[])}, attempt first to load each location as a
|
||||
* class, registering a {@code BeanDefinition} if class loading is successful, and if
|
||||
* class loading fails (i.e. a {@code ClassNotFoundException} is raised), assume the
|
||||
* value is a package and attempt to scan it for annotated classes.
|
||||
* <p>
|
||||
* Enables the default set of annotation configuration post processors, such that
|
||||
* {@code @Autowired}, {@code @Required}, and associated annotations can be used.
|
||||
* <p>
|
||||
* Configuration class bean definitions are registered with generated bean definition
|
||||
* names unless the {@code value} attribute is provided to the stereotype annotation.
|
||||
* @param beanFactory the bean factory to load bean definitions into
|
||||
* @see #register(Class...)
|
||||
* @see #scan(String...)
|
||||
* @see #setConfigLocation(String)
|
||||
* @see #setConfigLocations(String[])
|
||||
* @see AnnotatedBeanDefinitionReader
|
||||
* @see ClassPathBeanDefinitionScanner
|
||||
* @deprecated since 2.2.0 since this class no longer extends
|
||||
* {@code AbstractRefreshableConfigApplicationContext}
|
||||
*/
|
||||
@Deprecated
|
||||
protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Build an {@link AnnotatedBeanDefinitionReader} for the given bean factory.
|
||||
* <p>
|
||||
* This should be pre-configured with the {@code Environment} (if desired) but not
|
||||
* with a {@code BeanNameGenerator} or {@code ScopeMetadataResolver} yet.
|
||||
* @param beanFactory the bean factory to load bean definitions into
|
||||
* @return the annotated bean definition reader
|
||||
* @see #getEnvironment()
|
||||
* @see #getBeanNameGenerator()
|
||||
* @see #getScopeMetadataResolver()
|
||||
* @deprecated since 2.2.0 since this class no longer extends
|
||||
* {@code AbstractRefreshableConfigApplicationContext}
|
||||
*/
|
||||
@Deprecated
|
||||
protected AnnotatedBeanDefinitionReader getAnnotatedBeanDefinitionReader(
|
||||
DefaultListableBeanFactory beanFactory) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Build a {@link ClassPathBeanDefinitionScanner} for the given bean factory.
|
||||
* <p>
|
||||
* This should be pre-configured with the {@code Environment} (if desired) but not
|
||||
* with a {@code BeanNameGenerator} or {@code ScopeMetadataResolver} yet.
|
||||
* @param beanFactory the bean factory to load bean definitions into
|
||||
* @return the class path bean definition scanner
|
||||
* @see #getEnvironment()
|
||||
* @see #getBeanNameGenerator()
|
||||
* @see #getScopeMetadataResolver()
|
||||
* @deprecated since 2.2.0 since this class no longer extends
|
||||
* {@code AbstractRefreshableConfigApplicationContext}
|
||||
*/
|
||||
@Deprecated
|
||||
protected ClassPathBeanDefinitionScanner getClassPathBeanDefinitionScanner(
|
||||
DefaultListableBeanFactory beanFactory) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the config locations for this application context in init-param style, i.e.
|
||||
* with distinct locations separated by commas, semicolons or whitespace.
|
||||
* <p>
|
||||
* If not set, the implementation may use a default as appropriate.
|
||||
* @param location the config location
|
||||
* @deprecated since 2.2.0 since this class no longer extends
|
||||
* {@code AbstractRefreshableConfigApplicationContext}. Use {@link ImportResource}
|
||||
* instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public void setConfigLocation(String location) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the config locations for this application context.
|
||||
* <p>
|
||||
* If not set, the implementation may use a default as appropriate.
|
||||
* @param locations the config locations
|
||||
* @deprecated since 2.2.0 since this class no longer extends
|
||||
* {@code AbstractRefreshableConfigApplicationContext}. Use {@link ImportResource}
|
||||
* instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public void setConfigLocations(@Nullable String... locations) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an array of resource locations, referring to the XML bean definition files
|
||||
* that this context should be built with. Can also include location patterns, which
|
||||
* will get resolved via a ResourcePatternResolver.
|
||||
* <p>
|
||||
* The default implementation returns {@code null}. Subclasses can override this to
|
||||
* provide a set of resource locations to load bean definitions from.
|
||||
* @return an array of resource locations, or {@code null} if none
|
||||
* @see #getResources
|
||||
* @see #getResourcePatternResolver
|
||||
* @deprecated since 2.2.0 since this class no longer extends
|
||||
* {@code AbstractRefreshableConfigApplicationContext}.
|
||||
*/
|
||||
@Deprecated
|
||||
protected String[] getConfigLocations() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the default config locations to use, for the case where no explicit config
|
||||
* locations have been specified.
|
||||
* <p>
|
||||
* The default implementation returns {@code null}, requiring explicit config
|
||||
* locations.
|
||||
* @return an array of default config locations, if any
|
||||
* @see #setConfigLocations
|
||||
* @deprecated since 2.2.0 since this class no longer extends
|
||||
* {@code AbstractRefreshableConfigApplicationContext}.
|
||||
*/
|
||||
@Deprecated
|
||||
protected String[] getDefaultConfigLocations() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve the given path, replacing placeholders with corresponding environment
|
||||
* property values if necessary. Applied to config locations.
|
||||
* @param path the original file path
|
||||
* @return the resolved file path
|
||||
* @see org.springframework.core.env.Environment#resolveRequiredPlaceholders(String)
|
||||
* @deprecated since 2.2.0 since this class no longer extends
|
||||
* {@code AbstractRefreshableConfigApplicationContext}.
|
||||
*/
|
||||
@Deprecated
|
||||
protected String resolvePath(String path) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether this context currently holds a bean factory, i.e. has been
|
||||
* refreshed at least once and not been closed yet.
|
||||
* @return {@code true} if the context holds a bean factory
|
||||
* @deprecated since 2.2.0 since this class no longer extends
|
||||
* {@code AbstractRefreshableConfigApplicationContext}.
|
||||
*/
|
||||
@Deprecated
|
||||
protected final boolean hasBeanFactory() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an internal bean factory for this context. Called for each
|
||||
* {@link #refresh()} attempt.
|
||||
* <p>
|
||||
* The default implementation creates a
|
||||
* {@link org.springframework.beans.factory.support.DefaultListableBeanFactory} with
|
||||
* the {@linkplain #getInternalParentBeanFactory() internal bean factory} of this
|
||||
* context's parent as parent bean factory. Can be overridden in subclasses, for
|
||||
* example to customize DefaultListableBeanFactory's settings.
|
||||
* @return the bean factory for this context
|
||||
* @see org.springframework.beans.factory.support.DefaultListableBeanFactory#setAllowBeanDefinitionOverriding
|
||||
* @see org.springframework.beans.factory.support.DefaultListableBeanFactory#setAllowEagerClassLoading
|
||||
* @see org.springframework.beans.factory.support.DefaultListableBeanFactory#setAllowCircularReferences
|
||||
* @see org.springframework.beans.factory.support.DefaultListableBeanFactory#setAllowRawInjectionDespiteWrapping
|
||||
* @deprecated since 2.2.0 since this class no longer extends
|
||||
* {@code AbstractRefreshableConfigApplicationContext}.
|
||||
*/
|
||||
@Deprecated
|
||||
protected DefaultListableBeanFactory createBeanFactory() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Customize the internal bean factory used by this context. Called for each
|
||||
* {@link #refresh()} attempt.
|
||||
* <p>
|
||||
* The default implementation applies this context's
|
||||
* {@linkplain #setAllowBeanDefinitionOverriding "allowBeanDefinitionOverriding"} and
|
||||
* {@linkplain #setAllowCircularReferences "allowCircularReferences"} settings, if
|
||||
* specified. Can be overridden in subclasses to customize any of
|
||||
* {@link DefaultListableBeanFactory}'s settings.
|
||||
* @param beanFactory the newly created bean factory for this context
|
||||
* @see DefaultListableBeanFactory#setAllowBeanDefinitionOverriding
|
||||
* @see DefaultListableBeanFactory#setAllowCircularReferences
|
||||
* @see DefaultListableBeanFactory#setAllowRawInjectionDespiteWrapping
|
||||
* @see DefaultListableBeanFactory#setAllowEagerClassLoading
|
||||
* @deprecated since 2.2.0 since this class no longer extends
|
||||
* {@code AbstractRefreshableConfigApplicationContext}.
|
||||
*/
|
||||
@Deprecated
|
||||
protected void customizeBeanFactory(DefaultListableBeanFactory beanFactory) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user