2

我想了解 Spring Container 的 ClassLoader 是如何实现的。

这是一个示例:部署一个包含所有必要 jar 的 WAR,以便在 tomcat 的 web 容器中启动 Spring Container。

我的问题:
1. 我认为 Spring 容器类本身是由 web-container 创建的 WAR 的 ClassLoader 加载的是否正确?
2、WAR卸载时,spring容器加载的Class[](java.lang.Class对象)如何卸载。spring 本身有一个类加载器吗?或者它使用 webcontainer 提供的类加载器?
3. 如果我的 Spring Container 正在继承 bean(使用 web.xml 中的 parentContextKey),并且如果其中一个父 bean 具有lazy-init=true 并且被此部署的 WAR 请求,谁将加载和卸载所请求的 Class 对象豆 ?

提前致谢

4

2 回答 2

0

Your web-app can be based on Spring or simply on JSP&Servlets. And when you run Tomcat or other servlet container then it uses its ClassLoader that load classes and libraries from your WAR which is deployed to webapp folder (for Tomcat).

于 2012-07-12T08:49:25.820 回答
0

所有这些生命周期都由容器维护,您可以通过在 web.xml 中声明它来使其知道

RequestContextListener 将“请求”范围暴露给上下文。
org.springframework.web.context.request.RequestContextListener

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

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

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

看看有没有帮助

于 2012-07-11T18:21:05.430 回答