WebApplicationContextInitializer Class — spring-boot Architecture
Architecture documentation for the WebApplicationContextInitializer class in WebApplicationContextInitializer.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot/src/main/java/org/springframework/boot/web/context/servlet/WebApplicationContextInitializer.java lines 38–94
public class WebApplicationContextInitializer {
private static final Log logger = LogFactory.getLog(WebApplicationContextInitializer.class);
private final ConfigurableWebApplicationContext context;
public WebApplicationContextInitializer(ConfigurableWebApplicationContext context) {
this.context = context;
}
public void initialize(ServletContext servletContext) throws ServletException {
prepareWebApplicationContext(servletContext);
registerApplicationScope(servletContext, this.context.getBeanFactory());
WebApplicationContextUtils.registerEnvironmentBeans(this.context.getBeanFactory(), servletContext);
for (ServletContextInitializer initializerBean : new ServletContextInitializerBeans(
this.context.getBeanFactory())) {
initializerBean.onStartup(servletContext);
}
}
private void prepareWebApplicationContext(ServletContext servletContext) {
Object rootContext = servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
if (rootContext != null) {
if (rootContext == this) {
throw new IllegalStateException(
"Cannot initialize context because there is already a root application context present - "
+ "check whether you have multiple ServletContextInitializers!");
}
return;
}
try {
servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, this.context);
if (logger.isDebugEnabled()) {
logger.debug("Published root WebApplicationContext as ServletContext attribute with name ["
+ WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE + "]");
}
this.context.setServletContext(servletContext);
if (logger.isInfoEnabled()) {
long elapsedTime = System.currentTimeMillis() - this.context.getStartupDate();
logger.info("Root WebApplicationContext: initialization completed in " + elapsedTime + " ms");
}
}
catch (RuntimeException | Error ex) {
logger.error("Context initialization failed", ex);
servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, ex);
throw ex;
}
}
private void registerApplicationScope(ServletContext servletContext, ConfigurableListableBeanFactory beanFactory) {
ServletContextScope appScope = new ServletContextScope(servletContext);
beanFactory.registerScope(WebApplicationContext.SCOPE_APPLICATION, appScope);
// Register as ServletContext attribute, for ContextCleanupListener to detect it.
servletContext.setAttribute(ServletContextScope.class.getName(), appScope);
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free