Web容器如何管理弹簧控制器的生命周期


问题内容

如果我编写了一个简单的servlet应用程序,则在我的servlet类中,我将扩展httpservlet。这使容器知道我的类是一个servlet,它将管理该servlet的“生命周期”。init,doget(),destroy()等

但是Spring MVCframweork控制器类不会扩展任何servlet类。这是一个具有自己的自定义方法的POJO。现在,我可以使用Requestmapping分别调用这些方法。

但是,是否可以像管理servlet生命周期一样,由容器来“管理”这个spring控制器类?


问题答案:

但是,是否可以像管理servlet生命周期一样,由容器来“管理”这个spring控制器类?

不直接。然后,Spring
MVC应用程序的入口点通常为DispatcherServlet*。此类扩展(不是直接扩展,而是通过继承)HttpServlet。您可以像其他任何方式一样声明它Servlet,通常在中web.xml

但是,您不会自行声明它。您提供了一个Spring
ApplicationContextDispatcherServlet可以从Spring中获取@Controller将用于处理请求的带注释的类。

DispatcherServlet处理器堆栈是相当大的。涉及许多组件。官方的Spring
MVC是一个很好的文档。
您应该阅读它。

*之所以这么说,是因为Spring提供了其他处理程序HttpRequestHandler