我想了解Spring Container的ClassLoader。
这是一个例子: 部署包含所有必需jar的WAR,以便在tomcat的web容器内启动Spring Container。
我的问题:
1.我认为Spring容器类本身是由web容器创建的WAR的ClassLoader加载的吗?
2.取消部署WAR时,如何卸载spring容器加载的Class [](java.lang.Class对象)。春天有自己的类加载器吗?或者它使用webcontainer提供的类加载器?
3.如果我的Spring容器继承bean(在web.xml中使用parentContextKey),并且其中一个父bean具有lazy-init = true并且被此部署的WAR请求,那么谁将加载和卸载所请求的Class对象豆?
提前致谢
答案 0 :(得分:0)
所有这些生命周期都由容器维护,并通过在web.xml中声明它来使其知晓 例如
RequestContextListener将“请求”范围公开给上下文 org.springframework.web.context.request.RequestContextListener
这个从容器监听器扩展的监听器,容器能够处理生命周期。
如果你有任何懒惰的东西。 Web容器将调用委托给spring容器,该容器在类路径中搜索类。
所以基本上处理了生命周期。您还可以拥有自己的自定义侦听器来处理这些生命周期
看看是否有帮助
答案 1 :(得分:0)
您的网络应用程序可以基于Spring,也可以仅基于JSP和Servlet。
当你运行Tomcat或其他servlet容器时,它会使用它的ClassLoader来加载WAR中的类和库,这些类和库部署到webapp
文件夹(对于Tomcat)。