【发布时间】:2014-01-11 21:50:56
【问题描述】:
我是一个新手,正在经历春季学习曲线,我有一个问题想了解我将在哪些情况下使用基于代码的 servlet 容器初始化来对抗 web 描述符文件中的 xml 初始化。
我提出这个问题的原因是,此时我想花时间学习大部分时间都在使用什么,而不是重载框架提供的许多概念,这些概念可能只是为了灵活性。
有什么建议吗? 感谢阅读
【问题讨论】:
标签: spring spring-mvc servlets web.xml
我是一个新手,正在经历春季学习曲线,我有一个问题想了解我将在哪些情况下使用基于代码的 servlet 容器初始化来对抗 web 描述符文件中的 xml 初始化。
我提出这个问题的原因是,此时我想花时间学习大部分时间都在使用什么,而不是重载框架提供的许多概念,这些概念可能只是为了灵活性。
有什么建议吗? 感谢阅读
【问题讨论】:
标签: spring spring-mvc servlets web.xml
您想要使用基于 Java 的容器初始化的主要原因是当您想要注册 Spring 管理的 Servlet、Filter 和 XxxListener 对象时。
例如,当你想注册一个ServletContextListener,你指定
<listener>
com.your.listeners.MyListener
</listener>
在部署描述符中。容器采用完全限定的类名并使用反射来查找相应的Class 对象,并对其进行实例化以获取实例。换句话说,对象由容器唯一地管理。你不能轻易让 Spring 注入字段。
另一方面,使用 ServletContainerInitializer 或相应的 Spring 类,您可以在 Spring 上下文中指定 Servlet、Filter 或 Listener bean(通过 XML 或 @Configuration 类)并直接通过ServletContext注册那些Spring管理的实例。
请注意,仍有一些配置需要使用部署描述符。
【讨论】: