想了解一下Spring Container的ClassLoader是怎么实现的。
举个例子: 部署一个包含所有必要 jar 的 WAR,以便在 tomcat 的 webcontainer 中启动 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对象 bean ?
提前致谢
最佳答案
所有这些生命周期都由容器维护,你通过在 web.xml 中声明它来让它知道 例如
RequestContextListener 向上下文公开“请求”范围。
org.springframework.web.context.request.RequestContextListener
而这个从容器监听器扩展而来的监听器,容器能够处理生命周期。
如果你有任何惰性初始化的东西。 Web 容器将调用委托(delegate)给在类路径中搜索类的 spring 容器。
所以基本上生命周期得到处理。您还可以拥有自己的自定义监听器来处理这些生命周期
看看有没有帮助
关于java - Java EE部署中的Spring类加载机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11436294/