code: private ApplicationContext loadRootApplicationContext(String[] configLocations, MessageSource messageSource) {
          final ClassPathXmlApplicationContext applicationContext
                  = new ClassPathXmlApplicationContext(configLocations, false);
  
          if (splashScreen instanceof MonitoringSplashScreen) {
              final ProgressMonitor tracker = ((MonitoringSplashScreen) splashScreen).getProgressMonitor();
  
              applicationContext.addBeanFactoryPostProcessor(
                      new ProgressMonitoringBeanFactoryPostProcessor(tracker));
          }
          applicationContext.refresh();
  
          return applicationContext;
      }
docs: Returns an {@code ApplicationContext}, loaded from the bean definition
  files at the classpath-relative locations specified by
  {@code configLocations}.
  
  <p>
  If a splash screen has been created, the application context will be
  loaded with a bean post processor that will notify the splash screen's
  progress monitor as each bean is initialized.
  </p>
  
  @param configLocations The classpath-relative locations of the files from
  which the application context will be loaded.
  
  @return The main application context, never null.