/** * Load a Spring {@link WebApplicationContext} from the supplied {@link * MergedContextConfiguration}. * * <p>Implementation details: * * <ul> * <li>Creates a {@link GenericWebApplicationContext} instance. * <li>Delegates to {@link #configureWebResources} to create the {@link MockServletContext} and * set it in the {@code WebApplicationContext}. * <li>Calls {@link #prepareContext} to allow for customizing the context before bean * definitions are loaded. * <li>Calls {@link #customizeBeanFactory} to allow for customizing the context's {@code * DefaultListableBeanFactory}. * <li>Delegates to {@link #loadBeanDefinitions} to populate the context from the locations or * classes in the supplied {@code MergedContextConfiguration}. * <li>Delegates to {@link AnnotationConfigUtils} for {@linkplain * AnnotationConfigUtils#registerAnnotationConfigProcessors registering} annotation * configuration processors. * <li>Calls {@link #customizeContext} to allow for customizing the context before it is * refreshed. * <li>{@link ConfigurableApplicationContext#refresh Refreshes} the context and registers a JVM * shutdown hook for it. * </ul> * * @return a new web application context * @see * org.springframework.test.context.SmartContextLoader#loadContext(MergedContextConfiguration) * @see GenericWebApplicationContext */ @Override public final ConfigurableApplicationContext loadContext(MergedContextConfiguration mergedConfig) throws Exception { if (!(mergedConfig instanceof WebMergedContextConfiguration)) { throw new IllegalArgumentException( String.format( "Cannot load WebApplicationContext from non-web merged context configuration %s. " + "Consider annotating your test class with @WebAppConfiguration.", mergedConfig)); } WebMergedContextConfiguration webMergedConfig = (WebMergedContextConfiguration) mergedConfig; if (logger.isDebugEnabled()) { logger.debug( String.format( "Loading WebApplicationContext for merged context configuration %s.", webMergedConfig)); } GenericWebApplicationContext context = new GenericWebApplicationContext(); configureWebResources(context, webMergedConfig); prepareContext(context, webMergedConfig); customizeBeanFactory(context.getDefaultListableBeanFactory(), webMergedConfig); loadBeanDefinitions(context, webMergedConfig); AnnotationConfigUtils.registerAnnotationConfigProcessors(context); customizeContext(context, webMergedConfig); context.refresh(); context.registerShutdownHook(); return context; }
public ApplicationContext loadContext(String... locations) throws Exception { if (logger.isDebugEnabled()) { logger.debug( "Loading ApplicationContext for locations [" + StringUtils.arrayToCommaDelimitedString(locations) + "]."); } GenericWebApplicationContext context = new GenericWebApplicationContext(); prepareContext(context); customizeBeanFactory(context.getDefaultListableBeanFactory()); createBeanDefinitionReader(context).loadBeanDefinitions(locations); AnnotationConfigUtils.registerAnnotationConfigProcessors(context); customizeContext(context); context.refresh(); context.registerShutdownHook(); return context; }
public ApplicationContext loadContext(MergedContextConfiguration config) throws Exception { GenericWebApplicationContext context = new GenericWebApplicationContext(); // Commented out until SPR-10392 is fixed and we can upgrade to Spring 3.2.3.RELEASE or higher // ApplicationContext parent = config.getParentApplicationContext(); // if(parent != null) { // context.setParent(parent); // } prepareContext(context); prepareContext(context, config); customizeBeanFactory(context.getDefaultListableBeanFactory()); createBeanDefinitionReader(context).loadBeanDefinitions(config.getLocations()); AnnotationConfigUtils.registerAnnotationConfigProcessors(context); customizeContext(context); context.refresh(); context.registerShutdownHook(); return context; }