001/*002 * Copyright 2002-2020 the original author or authors.003 *004 * Licensed under the Apache License, Version 2.0 (the "License");005 * you may not use this file except in compliance with the License.006 * You may obtain a copy of the License at007 *008 * https://www.apache.org/licenses/LICENSE-2.0009 *010 * Unless required by applicable law or agreed to in writing, software011 * distributed under the License is distributed on an "AS IS" BASIS,012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.013 * See the License for the specific language governing permissions and014 * limitations under the License.015 */016017package org.springframework.context;018019import java.io.Closeable;020021import org.springframework.beans.BeansException;022import org.springframework.beans.factory.config.BeanFactoryPostProcessor;023import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;024import org.springframework.core.env.ConfigurableEnvironment;025import org.springframework.core.env.Environment;026import org.springframework.core.io.ProtocolResolver;027028/**029 * SPI interface to be implemented by most if not all application contexts.030 * Provides facilities to configure an application context in addition031 * to the application context client methods in the032 * {@link org.springframework.context.ApplicationContext} interface.033 *034 * <p>Configuration and lifecycle methods are encapsulated here to avoid035 * making them obvious to ApplicationContext client code. The present036 * methods should only be used by startup and shutdown code.037 *038 * @author Juergen Hoeller039 * @author Chris Beams040 * @since 03.11.2003041 */042public interface ConfigurableApplicationContext extends ApplicationContext, Lifecycle, Closeable {043044 /**045 * Any number of these characters are considered delimiters between046 * multiple context config paths in a single String value.047 * @see org.springframework.context.support.AbstractXmlApplicationContext#setConfigLocation048 * @see org.springframework.web.context.ContextLoader#CONFIG_LOCATION_PARAM049 * @see org.springframework.web.servlet.FrameworkServlet#setContextConfigLocation050 */051 String CONFIG_LOCATION_DELIMITERS = ",; \t\n";052053 /**054 * Name of the ConversionService bean in the factory.055 * If none is supplied, default conversion rules apply.056 * @since 3.0057 * @see org.springframework.core.convert.ConversionService058 */059 String CONVERSION_SERVICE_BEAN_NAME = "conversionService";060061 /**062 * Name of the LoadTimeWeaver bean in the factory. If such a bean is supplied,063 * the context will use a temporary ClassLoader for type matching, in order064 * to allow the LoadTimeWeaver to process all actual bean classes.065 * @since 2.5066 * @see org.springframework.instrument.classloading.LoadTimeWeaver067 */068 String LOAD_TIME_WEAVER_BEAN_NAME = "loadTimeWeaver";069070 /**071 * Name of the {@link Environment} bean in the factory.072 * @since 3.1