ContextLoaderListener
是启动 Spring 的一种引导程序,WebApplicationContext
而ApplicationListener
更多的是在 java 应用程序级别本身,而不是在 Web 应用程序上下文。
ContextLoaderListener
DispatcherServlet
如果它有多个s 或一些 servlet/servlet 过滤器映射到不同的服务,那么它是一个很好的标准工具,用于对您的应用程序进行上下文化。基本上,为此类应用程序的不同 servlet 设置侦听器很方便,这样您就可以进行细粒度的上下文化。
我不知道您正在构建的应用程序的性质,但我假设您现在正在尝试一些基本的东西。如果是这种情况,即使在您有更复杂的设置的情况下,最好在启动时加载一个控制器来处理您的主要初始化例程,包括您的上下文化。您可以在 web.xml 中使用具有类似内容的控制器 bean:
<servlet>
<servlet-name>your-servlet</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
每当您读取某个 url 模式时,也可以映射和调用这个 servelt,例如
@RequestMapping("/welcome")
public ModelAndView helloWorld()
而在 web 部署描述符中,这一点就像您将 servlet 映射到 Spring Security 等其他 Spring 服务一样:
<servlet-mapping>
<servlet-name>crunchify</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
因此,您实际上并不需要使用控制器的构造函数,也不需要总是使用ContextLoaderListener
其他侦听器来执行简单的初始化任务。尽管如此,学习它们的用例还是很方便的,因为您在扩展应用程序时会需要它。
在此处阅读有关调度程序 servlet 的更多信息:
http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework/web/servlet/DispatcherServlet.html