Java EE部署中的Spring类加载机制

时间:2012-07-11 15:38:54

标签: java spring classloader

我想了解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对象豆?

提前致谢

2 个答案:

答案 0 :(得分:0)

所有这些生命周期都由容器维护,并通过在web.xml中声明它来使其知晓  例如

                     RequestContextListener将“请求”范围公开给上下文                  org.springframework.web.context.request.RequestContextListener      

这个从容器监听器扩展的监听器,容器能够处理生命周期。

如果你有任何懒惰的东西。 Web容器将调用委托给spring容器,该容器在类路径中搜索类。

所以基本上处理了生命周期。您还可以拥有自己的自定义侦听器来处理这些生命周期

看看是否有帮助

答案 1 :(得分:0)

您的网络应用程序可以基于Spring,也可以仅基于JSP和Servlet。 当你运行Tomcat或其他servlet容器时,它会使用它的ClassLoader来加载WAR中的类和库,这些类和库部署到webapp文件夹(对于Tomcat)。