最佳答案
web.xml
.ContextLoaderListener
正在被实例化(如果在 <listener>
中定义为 web.xml
)由 servlet 容器。
ContextLoaderListener
创建新的 WebApplicationContext
使用应用程序上下文 XML 配置。BeanFactory
注册和实例化 在应用程序上下文中。DispatcherServlet
正在由 servlet 容器 实例化。
DispatcherServlet
创建自己的 WebApplicationContext
(默认为 WEB-INF/{servletName}-servlet.xml
),以 ROOT 上下文作为其父级。BeanFactory
注册和实例化。在应用程序上下文中。DispatcherServlet
注册一些默认 bean,以防您自己没有提供它们。这可以通过 Servlet 3 功能实现。
ServletContainerInitializer
的类通过 Java 的 ServiceLoader
.SpringServletContainerInitializer
由 servlet 容器找到并实例化。WebApplicationInitializer
实现。WebApplicationInitializer
被 SpringServletContainerInitializer
找到(顺便说一句。检查它的 JavaDoc!!!)并实例化 。
WebApplicationInitializer
创建新的 ROOT WebApplicationContext
使用 XML 或 @Configuration
基于配置。WebApplicationInitializer
创建新的 servlet WebApplicationContext
使用 XML 或 @Configuration
基于配置。WebApplicationInitializer
创建并注册新的 DispatcherServlet
使用上一步的上下文。基于 Java 的方法更加灵活。您可以将上下文创建留给 DispatcherServlet
甚至是 DispatcherServlet
的整个实例化自身到 servlet 容器(只需注册 servlet DispatcherServlet.class
而不是其实例)。
https://stackoverflow.com/questions/21714290/
相关文章:
java - 如何将 Class 值设置为 spring bean 属性?
java - Spring Security 匿名 401 而不是 403
java - Mybatis Spring多数据库Java配置
java - Spring Servlet 项目的 web.xml 中加载 contextConfi
java - 在 Spring 5 Webflux 中启用 CORS?
java - 为什么不推荐使用 HibernateTemplate?
java - 如何使用 Spring 为 JUnit 测试注入(inject) ServletCon