001/* 002 * Copyright 2002-2016 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 at 007 * 008 * https://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * 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 and 014 * limitations under the License. 015 */ 016 017package org.springframework.test.context; 018 019import org.springframework.context.ConfigurableApplicationContext; 020 021/** 022 * Strategy interface for customizing {@link ConfigurableApplicationContext 023 * application contexts} that are created and managed by the <em>Spring 024 * TestContext Framework</em>. 025 * 026 * <p>Customizers are created by {@link ContextCustomizerFactory} implementations. 027 * 028 * <p>Implementations must implement correct {@code equals} and {@code hashCode} 029 * methods since customizers form part of the {@link MergedContextConfiguration} 030 * which is used as a cache key. 031 * 032 * @author Phillip Webb 033 * @author Sam Brannen 034 * @since 4.3 035 * @see ContextCustomizerFactory 036 * @see org.springframework.test.context.support.AbstractContextLoader#customizeContext 037 */ 038public interface ContextCustomizer { 039 040 /** 041 * Customize the supplied {@code ConfigurableApplicationContext} <em>after</em> 042 * bean definitions have been loaded into the context but <em>before</em> the 043 * context has been refreshed. 044 * @param context the context to customize 045 * @param mergedConfig the merged context configuration 046 */ 047 void customizeContext(ConfigurableApplicationContext context, MergedContextConfiguration mergedConfig); 048 049}