commit
7db93aeb90
|
|
@ -18,12 +18,10 @@ package org.springframework.boot;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import org.springframework.aot.AotDetector;
|
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
import org.springframework.core.env.ConfigurableEnvironment;
|
||||||
import org.springframework.context.support.GenericApplicationContext;
|
import org.springframework.core.env.Environment;
|
||||||
import org.springframework.core.io.support.SpringFactoriesLoader;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Strategy interface for creating the {@link ConfigurableApplicationContext} used by a
|
* Strategy interface for creating the {@link ConfigurableApplicationContext} used by a
|
||||||
|
|
@ -42,23 +40,32 @@ public interface ApplicationContextFactory {
|
||||||
* A default {@link ApplicationContextFactory} implementation that will create an
|
* A default {@link ApplicationContextFactory} implementation that will create an
|
||||||
* appropriate context for the {@link WebApplicationType}.
|
* appropriate context for the {@link WebApplicationType}.
|
||||||
*/
|
*/
|
||||||
ApplicationContextFactory DEFAULT = (webApplicationType) -> {
|
ApplicationContextFactory DEFAULT = new DefaultApplicationContextFactory();
|
||||||
try {
|
|
||||||
for (ApplicationContextFactory candidate : SpringFactoriesLoader
|
/**
|
||||||
.loadFactories(ApplicationContextFactory.class, ApplicationContextFactory.class.getClassLoader())) {
|
* Return the {@link Environment} type expected to be set on the
|
||||||
ConfigurableApplicationContext context = candidate.create(webApplicationType);
|
* {@link #create(WebApplicationType) created} application context. The result of this
|
||||||
if (context != null) {
|
* method can be used to convert an existing environment instance to the correct type.
|
||||||
return context;
|
* @param webApplicationType the web application type
|
||||||
|
* @return the expected application context type or {@code null} to use the default
|
||||||
|
* @since 2.6.14
|
||||||
|
*/
|
||||||
|
default Class<? extends ConfigurableEnvironment> getEnvironmentType(WebApplicationType webApplicationType) {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new {@link Environment} to be set on the
|
||||||
|
* {@link #create(WebApplicationType) created} application context. The result of this
|
||||||
|
* method must match the type returned by
|
||||||
|
* {@link #getEnvironmentType(WebApplicationType)}.
|
||||||
|
* @param webApplicationType the web application type
|
||||||
|
* @return an environment instance or {@code null} to use the default
|
||||||
|
* @since 2.6.14
|
||||||
|
*/
|
||||||
|
default ConfigurableEnvironment createEnvironment(WebApplicationType webApplicationType) {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
return AotDetector.useGeneratedArtifacts() ? new GenericApplicationContext()
|
|
||||||
: new AnnotationConfigApplicationContext();
|
|
||||||
}
|
|
||||||
catch (Exception ex) {
|
|
||||||
throw new IllegalStateException("Unable create a default ApplicationContext instance, "
|
|
||||||
+ "you may need a custom ApplicationContextFactory", ex);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates the {@link ConfigurableApplicationContext application context} for a
|
* Creates the {@link ConfigurableApplicationContext application context} for a
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,78 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2012-2022 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.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot;
|
||||||
|
|
||||||
|
import java.util.function.BiFunction;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
import org.springframework.aot.AotDetector;
|
||||||
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
|
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||||
|
import org.springframework.context.support.GenericApplicationContext;
|
||||||
|
import org.springframework.core.env.ConfigurableEnvironment;
|
||||||
|
import org.springframework.core.io.support.SpringFactoriesLoader;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default {@link ApplicationContextFactory} implementation that will create an
|
||||||
|
* appropriate context for the {@link WebApplicationType}.
|
||||||
|
*
|
||||||
|
* @author Phillip Webb
|
||||||
|
*/
|
||||||
|
class DefaultApplicationContextFactory implements ApplicationContextFactory {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<? extends ConfigurableEnvironment> getEnvironmentType(WebApplicationType webApplicationType) {
|
||||||
|
return getFromSpringFactories(webApplicationType, ApplicationContextFactory::getEnvironmentType, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ConfigurableEnvironment createEnvironment(WebApplicationType webApplicationType) {
|
||||||
|
return getFromSpringFactories(webApplicationType, ApplicationContextFactory::createEnvironment, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ConfigurableApplicationContext create(WebApplicationType webApplicationType) {
|
||||||
|
try {
|
||||||
|
return getFromSpringFactories(webApplicationType, ApplicationContextFactory::create,
|
||||||
|
this::createDefaultApplicationContext);
|
||||||
|
}
|
||||||
|
catch (Exception ex) {
|
||||||
|
throw new IllegalStateException("Unable create a default ApplicationContext instance, "
|
||||||
|
+ "you may need a custom ApplicationContextFactory", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ConfigurableApplicationContext createDefaultApplicationContext() {
|
||||||
|
if (!AotDetector.useGeneratedArtifacts()) {
|
||||||
|
return new AnnotationConfigApplicationContext();
|
||||||
|
}
|
||||||
|
return new GenericApplicationContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
private <T> T getFromSpringFactories(WebApplicationType webApplicationType,
|
||||||
|
BiFunction<ApplicationContextFactory, WebApplicationType, T> action, Supplier<T> defaultResult) {
|
||||||
|
for (ApplicationContextFactory candidate : SpringFactoriesLoader.loadFactories(ApplicationContextFactory.class,
|
||||||
|
getClass().getClassLoader())) {
|
||||||
|
T result = action.apply(candidate, webApplicationType);
|
||||||
|
if (result != null) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (defaultResult != null) ? defaultResult.get() : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2020 the original author or authors.
|
* Copyright 2012-2022 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
package org.springframework.boot;
|
package org.springframework.boot;
|
||||||
|
|
||||||
|
import java.lang.reflect.Constructor;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
@ -26,6 +27,7 @@ import org.springframework.core.env.MutablePropertySources;
|
||||||
import org.springframework.core.env.PropertySource;
|
import org.springframework.core.env.PropertySource;
|
||||||
import org.springframework.core.env.StandardEnvironment;
|
import org.springframework.core.env.StandardEnvironment;
|
||||||
import org.springframework.util.ClassUtils;
|
import org.springframework.util.ClassUtils;
|
||||||
|
import org.springframework.util.ReflectionUtils;
|
||||||
import org.springframework.web.context.support.StandardServletEnvironment;
|
import org.springframework.web.context.support.StandardServletEnvironment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -68,33 +70,35 @@ final class EnvironmentConverter {
|
||||||
* @param type the type to convert the Environment to
|
* @param type the type to convert the Environment to
|
||||||
* @return the converted Environment
|
* @return the converted Environment
|
||||||
*/
|
*/
|
||||||
StandardEnvironment convertEnvironmentIfNecessary(ConfigurableEnvironment environment,
|
ConfigurableEnvironment convertEnvironmentIfNecessary(ConfigurableEnvironment environment,
|
||||||
Class<? extends StandardEnvironment> type) {
|
Class<? extends ConfigurableEnvironment> type) {
|
||||||
if (type.equals(environment.getClass())) {
|
if (type.equals(environment.getClass())) {
|
||||||
return (StandardEnvironment) environment;
|
return environment;
|
||||||
}
|
}
|
||||||
return convertEnvironment(environment, type);
|
return convertEnvironment(environment, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
private StandardEnvironment convertEnvironment(ConfigurableEnvironment environment,
|
private ConfigurableEnvironment convertEnvironment(ConfigurableEnvironment environment,
|
||||||
Class<? extends StandardEnvironment> type) {
|
Class<? extends ConfigurableEnvironment> type) {
|
||||||
StandardEnvironment result = createEnvironment(type);
|
ConfigurableEnvironment result = createEnvironment(type);
|
||||||
result.setActiveProfiles(environment.getActiveProfiles());
|
result.setActiveProfiles(environment.getActiveProfiles());
|
||||||
result.setConversionService(environment.getConversionService());
|
result.setConversionService(environment.getConversionService());
|
||||||
copyPropertySources(environment, result);
|
copyPropertySources(environment, result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private StandardEnvironment createEnvironment(Class<? extends StandardEnvironment> type) {
|
private ConfigurableEnvironment createEnvironment(Class<? extends ConfigurableEnvironment> type) {
|
||||||
try {
|
try {
|
||||||
return type.getDeclaredConstructor().newInstance();
|
Constructor<? extends ConfigurableEnvironment> constructor = type.getDeclaredConstructor();
|
||||||
|
ReflectionUtils.makeAccessible(constructor);
|
||||||
|
return constructor.newInstance();
|
||||||
}
|
}
|
||||||
catch (Exception ex) {
|
catch (Exception ex) {
|
||||||
return new StandardEnvironment();
|
return new ApplicationEnvironment();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void copyPropertySources(ConfigurableEnvironment source, StandardEnvironment target) {
|
private void copyPropertySources(ConfigurableEnvironment source, ConfigurableEnvironment target) {
|
||||||
removePropertySources(target.getPropertySources(), isServletEnvironment(target.getClass(), this.classLoader));
|
removePropertySources(target.getPropertySources(), isServletEnvironment(target.getClass(), this.classLoader));
|
||||||
for (PropertySource<?> propertySource : source.getPropertySources()) {
|
for (PropertySource<?> propertySource : source.getPropertySources()) {
|
||||||
if (!SERVLET_ENVIRONMENT_SOURCE_NAMES.contains(propertySource.getName())) {
|
if (!SERVLET_ENVIRONMENT_SOURCE_NAMES.contains(propertySource.getName())) {
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,6 @@ import org.springframework.core.env.Environment;
|
||||||
import org.springframework.core.env.MutablePropertySources;
|
import org.springframework.core.env.MutablePropertySources;
|
||||||
import org.springframework.core.env.PropertySource;
|
import org.springframework.core.env.PropertySource;
|
||||||
import org.springframework.core.env.SimpleCommandLinePropertySource;
|
import org.springframework.core.env.SimpleCommandLinePropertySource;
|
||||||
import org.springframework.core.env.StandardEnvironment;
|
|
||||||
import org.springframework.core.io.DefaultResourceLoader;
|
import org.springframework.core.io.DefaultResourceLoader;
|
||||||
import org.springframework.core.io.ResourceLoader;
|
import org.springframework.core.io.ResourceLoader;
|
||||||
import org.springframework.core.io.support.SpringFactoriesLoader;
|
import org.springframework.core.io.support.SpringFactoriesLoader;
|
||||||
|
|
@ -365,12 +364,16 @@ public class SpringApplication {
|
||||||
return environment;
|
return environment;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Class<? extends StandardEnvironment> deduceEnvironmentClass() {
|
private Class<? extends ConfigurableEnvironment> deduceEnvironmentClass() {
|
||||||
return switch (this.webApplicationType) {
|
Class<? extends ConfigurableEnvironment> environmentType = this.applicationContextFactory
|
||||||
case SERVLET -> ApplicationServletEnvironment.class;
|
.getEnvironmentType(this.webApplicationType);
|
||||||
case REACTIVE -> ApplicationReactiveWebEnvironment.class;
|
if (environmentType == null && this.applicationContextFactory != ApplicationContextFactory.DEFAULT) {
|
||||||
default -> ApplicationEnvironment.class;
|
environmentType = ApplicationContextFactory.DEFAULT.getEnvironmentType(this.webApplicationType);
|
||||||
};
|
}
|
||||||
|
if (environmentType == null) {
|
||||||
|
return ApplicationEnvironment.class;
|
||||||
|
}
|
||||||
|
return environmentType;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void prepareContext(DefaultBootstrapContext bootstrapContext, ConfigurableApplicationContext context,
|
private void prepareContext(DefaultBootstrapContext bootstrapContext, ConfigurableApplicationContext context,
|
||||||
|
|
@ -462,14 +465,11 @@ public class SpringApplication {
|
||||||
if (this.environment != null) {
|
if (this.environment != null) {
|
||||||
return this.environment;
|
return this.environment;
|
||||||
}
|
}
|
||||||
switch (this.webApplicationType) {
|
ConfigurableEnvironment environment = this.applicationContextFactory.createEnvironment(this.webApplicationType);
|
||||||
case SERVLET:
|
if (environment == null && this.applicationContextFactory != ApplicationContextFactory.DEFAULT) {
|
||||||
return new ApplicationServletEnvironment();
|
environment = ApplicationContextFactory.DEFAULT.createEnvironment(this.webApplicationType);
|
||||||
case REACTIVE:
|
|
||||||
return new ApplicationReactiveWebEnvironment();
|
|
||||||
default:
|
|
||||||
return new ApplicationEnvironment();
|
|
||||||
}
|
}
|
||||||
|
return (environment != null) ? environment : new ApplicationEnvironment();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2021 the original author or authors.
|
* Copyright 2012-2022 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -14,10 +14,10 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.springframework.boot;
|
package org.springframework.boot.web.reactive.context;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.context.properties.source.ConfigurationPropertySources;
|
import org.springframework.boot.context.properties.source.ConfigurationPropertySources;
|
||||||
import org.springframework.boot.web.reactive.context.StandardReactiveWebEnvironment;
|
|
||||||
import org.springframework.core.env.ConfigurablePropertyResolver;
|
import org.springframework.core.env.ConfigurablePropertyResolver;
|
||||||
import org.springframework.core.env.MutablePropertySources;
|
import org.springframework.core.env.MutablePropertySources;
|
||||||
|
|
||||||
|
|
@ -20,6 +20,7 @@ import org.springframework.aot.AotDetector;
|
||||||
import org.springframework.boot.ApplicationContextFactory;
|
import org.springframework.boot.ApplicationContextFactory;
|
||||||
import org.springframework.boot.WebApplicationType;
|
import org.springframework.boot.WebApplicationType;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
|
import org.springframework.core.env.ConfigurableEnvironment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link ApplicationContextFactory} registered in {@code spring.factories} to support
|
* {@link ApplicationContextFactory} registered in {@code spring.factories} to support
|
||||||
|
|
@ -31,6 +32,16 @@ import org.springframework.context.ConfigurableApplicationContext;
|
||||||
*/
|
*/
|
||||||
class ReactiveWebServerApplicationContextFactory implements ApplicationContextFactory {
|
class ReactiveWebServerApplicationContextFactory implements ApplicationContextFactory {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<? extends ConfigurableEnvironment> getEnvironmentType(WebApplicationType webApplicationType) {
|
||||||
|
return (webApplicationType != WebApplicationType.REACTIVE) ? null : ApplicationReactiveWebEnvironment.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ConfigurableEnvironment createEnvironment(WebApplicationType webApplicationType) {
|
||||||
|
return (webApplicationType != WebApplicationType.REACTIVE) ? null : new ApplicationReactiveWebEnvironment();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConfigurableApplicationContext create(WebApplicationType webApplicationType) {
|
public ConfigurableApplicationContext create(WebApplicationType webApplicationType) {
|
||||||
return (webApplicationType != WebApplicationType.REACTIVE) ? null : createContext();
|
return (webApplicationType != WebApplicationType.REACTIVE) ? null : createContext();
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2021 the original author or authors.
|
* Copyright 2012-2022 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -14,8 +14,9 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.springframework.boot;
|
package org.springframework.boot.web.servlet.context;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.context.properties.source.ConfigurationPropertySources;
|
import org.springframework.boot.context.properties.source.ConfigurationPropertySources;
|
||||||
import org.springframework.core.env.ConfigurablePropertyResolver;
|
import org.springframework.core.env.ConfigurablePropertyResolver;
|
||||||
import org.springframework.core.env.MutablePropertySources;
|
import org.springframework.core.env.MutablePropertySources;
|
||||||
|
|
@ -20,6 +20,7 @@ import org.springframework.aot.AotDetector;
|
||||||
import org.springframework.boot.ApplicationContextFactory;
|
import org.springframework.boot.ApplicationContextFactory;
|
||||||
import org.springframework.boot.WebApplicationType;
|
import org.springframework.boot.WebApplicationType;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
|
import org.springframework.core.env.ConfigurableEnvironment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link ApplicationContextFactory} registered in {@code spring.factories} to support
|
* {@link ApplicationContextFactory} registered in {@code spring.factories} to support
|
||||||
|
|
@ -31,6 +32,16 @@ import org.springframework.context.ConfigurableApplicationContext;
|
||||||
*/
|
*/
|
||||||
class ServletWebServerApplicationContextFactory implements ApplicationContextFactory {
|
class ServletWebServerApplicationContextFactory implements ApplicationContextFactory {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<? extends ConfigurableEnvironment> getEnvironmentType(WebApplicationType webApplicationType) {
|
||||||
|
return (webApplicationType != WebApplicationType.SERVLET) ? null : ApplicationServletEnvironment.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ConfigurableEnvironment createEnvironment(WebApplicationType webApplicationType) {
|
||||||
|
return (webApplicationType != WebApplicationType.SERVLET) ? null : new ApplicationServletEnvironment();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConfigurableApplicationContext create(WebApplicationType webApplicationType) {
|
public ConfigurableApplicationContext create(WebApplicationType webApplicationType) {
|
||||||
return (webApplicationType != WebApplicationType.SERVLET) ? null : createContext();
|
return (webApplicationType != WebApplicationType.SERVLET) ? null : createContext();
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import org.springframework.core.convert.support.ConfigurableConversionService;
|
import org.springframework.core.convert.support.ConfigurableConversionService;
|
||||||
import org.springframework.core.env.AbstractEnvironment;
|
import org.springframework.core.env.AbstractEnvironment;
|
||||||
|
import org.springframework.core.env.ConfigurableEnvironment;
|
||||||
import org.springframework.core.env.PropertySource;
|
import org.springframework.core.env.PropertySource;
|
||||||
import org.springframework.core.env.StandardEnvironment;
|
import org.springframework.core.env.StandardEnvironment;
|
||||||
import org.springframework.mock.env.MockEnvironment;
|
import org.springframework.mock.env.MockEnvironment;
|
||||||
|
|
@ -46,7 +47,7 @@ class EnvironmentConverterTests {
|
||||||
void convertedEnvironmentHasSameActiveProfiles() {
|
void convertedEnvironmentHasSameActiveProfiles() {
|
||||||
AbstractEnvironment originalEnvironment = new MockEnvironment();
|
AbstractEnvironment originalEnvironment = new MockEnvironment();
|
||||||
originalEnvironment.setActiveProfiles("activeProfile1", "activeProfile2");
|
originalEnvironment.setActiveProfiles("activeProfile1", "activeProfile2");
|
||||||
StandardEnvironment convertedEnvironment = this.environmentConverter
|
ConfigurableEnvironment convertedEnvironment = this.environmentConverter
|
||||||
.convertEnvironmentIfNecessary(originalEnvironment, StandardEnvironment.class);
|
.convertEnvironmentIfNecessary(originalEnvironment, StandardEnvironment.class);
|
||||||
assertThat(convertedEnvironment.getActiveProfiles()).containsExactly("activeProfile1", "activeProfile2");
|
assertThat(convertedEnvironment.getActiveProfiles()).containsExactly("activeProfile1", "activeProfile2");
|
||||||
}
|
}
|
||||||
|
|
@ -56,7 +57,7 @@ class EnvironmentConverterTests {
|
||||||
AbstractEnvironment originalEnvironment = new MockEnvironment();
|
AbstractEnvironment originalEnvironment = new MockEnvironment();
|
||||||
ConfigurableConversionService conversionService = mock(ConfigurableConversionService.class);
|
ConfigurableConversionService conversionService = mock(ConfigurableConversionService.class);
|
||||||
originalEnvironment.setConversionService(conversionService);
|
originalEnvironment.setConversionService(conversionService);
|
||||||
StandardEnvironment convertedEnvironment = this.environmentConverter
|
ConfigurableEnvironment convertedEnvironment = this.environmentConverter
|
||||||
.convertEnvironmentIfNecessary(originalEnvironment, StandardEnvironment.class);
|
.convertEnvironmentIfNecessary(originalEnvironment, StandardEnvironment.class);
|
||||||
assertThat(convertedEnvironment.getConversionService()).isEqualTo(conversionService);
|
assertThat(convertedEnvironment.getConversionService()).isEqualTo(conversionService);
|
||||||
}
|
}
|
||||||
|
|
@ -64,7 +65,7 @@ class EnvironmentConverterTests {
|
||||||
@Test
|
@Test
|
||||||
void envClassSameShouldReturnEnvironmentUnconverted() {
|
void envClassSameShouldReturnEnvironmentUnconverted() {
|
||||||
StandardEnvironment standardEnvironment = new StandardEnvironment();
|
StandardEnvironment standardEnvironment = new StandardEnvironment();
|
||||||
StandardEnvironment convertedEnvironment = this.environmentConverter
|
ConfigurableEnvironment convertedEnvironment = this.environmentConverter
|
||||||
.convertEnvironmentIfNecessary(standardEnvironment, StandardEnvironment.class);
|
.convertEnvironmentIfNecessary(standardEnvironment, StandardEnvironment.class);
|
||||||
assertThat(convertedEnvironment).isSameAs(standardEnvironment);
|
assertThat(convertedEnvironment).isSameAs(standardEnvironment);
|
||||||
}
|
}
|
||||||
|
|
@ -72,7 +73,7 @@ class EnvironmentConverterTests {
|
||||||
@Test
|
@Test
|
||||||
void standardServletEnvironmentIsConverted() {
|
void standardServletEnvironmentIsConverted() {
|
||||||
StandardServletEnvironment standardServletEnvironment = new StandardServletEnvironment();
|
StandardServletEnvironment standardServletEnvironment = new StandardServletEnvironment();
|
||||||
StandardEnvironment convertedEnvironment = this.environmentConverter
|
ConfigurableEnvironment convertedEnvironment = this.environmentConverter
|
||||||
.convertEnvironmentIfNecessary(standardServletEnvironment, StandardEnvironment.class);
|
.convertEnvironmentIfNecessary(standardServletEnvironment, StandardEnvironment.class);
|
||||||
assertThat(convertedEnvironment).isNotSameAs(standardServletEnvironment);
|
assertThat(convertedEnvironment).isNotSameAs(standardServletEnvironment);
|
||||||
}
|
}
|
||||||
|
|
@ -80,7 +81,7 @@ class EnvironmentConverterTests {
|
||||||
@Test
|
@Test
|
||||||
void servletPropertySourcesAreNotCopiedOverIfNotWebEnvironment() {
|
void servletPropertySourcesAreNotCopiedOverIfNotWebEnvironment() {
|
||||||
StandardServletEnvironment standardServletEnvironment = new StandardServletEnvironment();
|
StandardServletEnvironment standardServletEnvironment = new StandardServletEnvironment();
|
||||||
StandardEnvironment convertedEnvironment = this.environmentConverter
|
ConfigurableEnvironment convertedEnvironment = this.environmentConverter
|
||||||
.convertEnvironmentIfNecessary(standardServletEnvironment, StandardEnvironment.class);
|
.convertEnvironmentIfNecessary(standardServletEnvironment, StandardEnvironment.class);
|
||||||
assertThat(convertedEnvironment).isNotSameAs(standardServletEnvironment);
|
assertThat(convertedEnvironment).isNotSameAs(standardServletEnvironment);
|
||||||
Set<String> names = new HashSet<>();
|
Set<String> names = new HashSet<>();
|
||||||
|
|
@ -95,7 +96,7 @@ class EnvironmentConverterTests {
|
||||||
@Test
|
@Test
|
||||||
void envClassSameShouldReturnEnvironmentUnconvertedEvenForWeb() {
|
void envClassSameShouldReturnEnvironmentUnconvertedEvenForWeb() {
|
||||||
StandardServletEnvironment standardServletEnvironment = new StandardServletEnvironment();
|
StandardServletEnvironment standardServletEnvironment = new StandardServletEnvironment();
|
||||||
StandardEnvironment convertedEnvironment = this.environmentConverter
|
ConfigurableEnvironment convertedEnvironment = this.environmentConverter
|
||||||
.convertEnvironmentIfNecessary(standardServletEnvironment, StandardServletEnvironment.class);
|
.convertEnvironmentIfNecessary(standardServletEnvironment, StandardServletEnvironment.class);
|
||||||
assertThat(convertedEnvironment).isSameAs(standardServletEnvironment);
|
assertThat(convertedEnvironment).isSameAs(standardServletEnvironment);
|
||||||
}
|
}
|
||||||
|
|
@ -103,7 +104,7 @@ class EnvironmentConverterTests {
|
||||||
@Test
|
@Test
|
||||||
void servletPropertySourcesArePresentWhenTypeToConvertIsWeb() {
|
void servletPropertySourcesArePresentWhenTypeToConvertIsWeb() {
|
||||||
StandardEnvironment standardEnvironment = new StandardEnvironment();
|
StandardEnvironment standardEnvironment = new StandardEnvironment();
|
||||||
StandardEnvironment convertedEnvironment = this.environmentConverter
|
ConfigurableEnvironment convertedEnvironment = this.environmentConverter
|
||||||
.convertEnvironmentIfNecessary(standardEnvironment, StandardServletEnvironment.class);
|
.convertEnvironmentIfNecessary(standardEnvironment, StandardServletEnvironment.class);
|
||||||
assertThat(convertedEnvironment).isNotSameAs(standardEnvironment);
|
assertThat(convertedEnvironment).isNotSameAs(standardEnvironment);
|
||||||
Set<String> names = new HashSet<>();
|
Set<String> names = new HashSet<>();
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,7 @@ import org.springframework.boot.web.embedded.netty.NettyReactiveWebServerFactory
|
||||||
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
||||||
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
|
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
|
||||||
import org.springframework.boot.web.reactive.context.ReactiveWebApplicationContext;
|
import org.springframework.boot.web.reactive.context.ReactiveWebApplicationContext;
|
||||||
|
import org.springframework.boot.web.reactive.context.StandardReactiveWebEnvironment;
|
||||||
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
|
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.ApplicationContextAware;
|
import org.springframework.context.ApplicationContextAware;
|
||||||
|
|
@ -432,7 +433,8 @@ class SpringApplicationTests {
|
||||||
SpringApplication application = new SpringApplication(ExampleWebConfig.class);
|
SpringApplication application = new SpringApplication(ExampleWebConfig.class);
|
||||||
application.setWebApplicationType(WebApplicationType.SERVLET);
|
application.setWebApplicationType(WebApplicationType.SERVLET);
|
||||||
this.context = application.run();
|
this.context = application.run();
|
||||||
assertThat(this.context.getEnvironment()).isInstanceOf(ApplicationServletEnvironment.class);
|
assertThat(this.context.getEnvironment()).isInstanceOf(StandardServletEnvironment.class);
|
||||||
|
assertThat(this.context.getEnvironment().getClass().getName()).endsWith("ApplicationServletEnvironment");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -440,7 +442,8 @@ class SpringApplicationTests {
|
||||||
SpringApplication application = new SpringApplication(ExampleReactiveWebConfig.class);
|
SpringApplication application = new SpringApplication(ExampleReactiveWebConfig.class);
|
||||||
application.setWebApplicationType(WebApplicationType.REACTIVE);
|
application.setWebApplicationType(WebApplicationType.REACTIVE);
|
||||||
this.context = application.run();
|
this.context = application.run();
|
||||||
assertThat(this.context.getEnvironment()).isInstanceOf(ApplicationReactiveWebEnvironment.class);
|
assertThat(this.context.getEnvironment()).isInstanceOf(StandardReactiveWebEnvironment.class);
|
||||||
|
assertThat(this.context.getEnvironment().getClass().getName()).endsWith("ApplicationReactiveWebEnvironment");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -1015,7 +1018,7 @@ class SpringApplicationTests {
|
||||||
void webApplicationSwitchedOffInListener() {
|
void webApplicationSwitchedOffInListener() {
|
||||||
TestSpringApplication application = new TestSpringApplication(ExampleConfig.class);
|
TestSpringApplication application = new TestSpringApplication(ExampleConfig.class);
|
||||||
application.addListeners((ApplicationListener<ApplicationEnvironmentPreparedEvent>) (event) -> {
|
application.addListeners((ApplicationListener<ApplicationEnvironmentPreparedEvent>) (event) -> {
|
||||||
assertThat(event.getEnvironment()).isInstanceOf(ApplicationServletEnvironment.class);
|
assertThat(event.getEnvironment().getClass().getName()).endsWith("ApplicationServletEnvironment");
|
||||||
TestPropertySourceUtils.addInlinedPropertiesToEnvironment(event.getEnvironment(), "foo=bar");
|
TestPropertySourceUtils.addInlinedPropertiesToEnvironment(event.getEnvironment(), "foo=bar");
|
||||||
event.getSpringApplication().setWebApplicationType(WebApplicationType.NONE);
|
event.getSpringApplication().setWebApplicationType(WebApplicationType.NONE);
|
||||||
});
|
});
|
||||||
|
|
@ -1041,7 +1044,8 @@ class SpringApplicationTests {
|
||||||
ConfigurableApplicationContext context = new SpringApplication(ExampleWebConfig.class)
|
ConfigurableApplicationContext context = new SpringApplication(ExampleWebConfig.class)
|
||||||
.run("--spring.main.web-application-type=servlet");
|
.run("--spring.main.web-application-type=servlet");
|
||||||
assertThat(context).isInstanceOf(WebApplicationContext.class);
|
assertThat(context).isInstanceOf(WebApplicationContext.class);
|
||||||
assertThat(context.getEnvironment()).isInstanceOf(ApplicationServletEnvironment.class);
|
assertThat(context.getEnvironment()).isInstanceOf(StandardServletEnvironment.class);
|
||||||
|
assertThat(context.getEnvironment().getClass().getName()).endsWith("ApplicationServletEnvironment");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -1049,7 +1053,8 @@ class SpringApplicationTests {
|
||||||
ConfigurableApplicationContext context = new SpringApplication(ExampleReactiveWebConfig.class)
|
ConfigurableApplicationContext context = new SpringApplication(ExampleReactiveWebConfig.class)
|
||||||
.run("--spring.main.web-application-type=reactive");
|
.run("--spring.main.web-application-type=reactive");
|
||||||
assertThat(context).isInstanceOf(ReactiveWebApplicationContext.class);
|
assertThat(context).isInstanceOf(ReactiveWebApplicationContext.class);
|
||||||
assertThat(context.getEnvironment()).isInstanceOf(ApplicationReactiveWebEnvironment.class);
|
assertThat(context.getEnvironment()).isInstanceOf(StandardReactiveWebEnvironment.class);
|
||||||
|
assertThat(context.getEnvironment().getClass().getName()).endsWith("ApplicationReactiveWebEnvironment");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -1057,7 +1062,8 @@ class SpringApplicationTests {
|
||||||
ConfigurableApplicationContext context = new SpringApplication(ExampleReactiveWebConfig.class)
|
ConfigurableApplicationContext context = new SpringApplication(ExampleReactiveWebConfig.class)
|
||||||
.run("--spring.profiles.active=withwebapplicationtype");
|
.run("--spring.profiles.active=withwebapplicationtype");
|
||||||
assertThat(context).isInstanceOf(ReactiveWebApplicationContext.class);
|
assertThat(context).isInstanceOf(ReactiveWebApplicationContext.class);
|
||||||
assertThat(context.getEnvironment()).isInstanceOf(ApplicationReactiveWebEnvironment.class);
|
assertThat(context.getEnvironment()).isInstanceOf(StandardReactiveWebEnvironment.class);
|
||||||
|
assertThat(context.getEnvironment().getClass().getName()).endsWith("ApplicationReactiveWebEnvironment");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2021 the original author or authors.
|
* Copyright 2012-2022 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -14,8 +14,9 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.springframework.boot;
|
package org.springframework.boot.web.reactive.context;
|
||||||
|
|
||||||
|
import org.springframework.boot.AbstractApplicationEnvironmentTests;
|
||||||
import org.springframework.core.env.StandardEnvironment;
|
import org.springframework.core.env.StandardEnvironment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2021 the original author or authors.
|
* Copyright 2012-2022 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -14,8 +14,9 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.springframework.boot;
|
package org.springframework.boot.web.servlet.context;
|
||||||
|
|
||||||
|
import org.springframework.boot.AbstractApplicationEnvironmentTests;
|
||||||
import org.springframework.core.env.StandardEnvironment;
|
import org.springframework.core.env.StandardEnvironment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Loading…
Reference in New Issue