code: protected ConfigurableApplicationContext createApplicationContext() {
  		Class<?> contextClass = this.applicationContextClass;
  		if (contextClass == null) {
  			try {
  				switch (this.webApplicationType) {
  				case SERVLET:
  					contextClass = Class.forName(DEFAULT_SERVLET_WEB_CONTEXT_CLASS);
  					break;
  				case REACTIVE:
  					contextClass = Class.forName(DEFAULT_REACTIVE_WEB_CONTEXT_CLASS);
  					break;
  				default:
  					contextClass = Class.forName(DEFAULT_CONTEXT_CLASS);
  				}
  			}
  			catch (ClassNotFoundException ex) {
  				throw new IllegalStateException(
  						"Unable create a default ApplicationContext, "
  								+ "please specify an ApplicationContextClass",
  						ex);
  			}
  		}
  		return (ConfigurableApplicationContext) BeanUtils.instantiateClass(contextClass);
  	}
docs: Strategy method used to create the {@link ApplicationContext}. By default this
  method will respect any explicitly set application context or application context
  class before falling back to a suitable default.
  @return the application context (not yet refreshed)
  @see #setApplicationContextClass(Class)