コード例 #1
0
  /**
   * 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;
  }
コード例 #2
0
 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;
 }
コード例 #3
0
  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;
  }