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
ApplicationContext
,DispatcherServlet
可以从Spring中获取@Controller
将用于处理请求的带注释的类。
该DispatcherServlet
处理器堆栈是相当大的。涉及许多组件。官方的Spring
MVC是一个很好的文档。
您应该阅读它。
*之所以这么说,是因为Spring提供了其他处理程序HttpRequestHandler
。