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

标签 java spring classloader

想了解一下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/

相关文章:

java - 静态和动态语言中的依赖注入(inject)

java - Spring : Exception starting filter springSecurityFilterChain

java - 如何获取另一个jar中的资源

java - 将 Spring 上下文注入(inject)非 Spring 类

java - getAnnotations() 为空

java - 根据位置条件创建Adapter

java - Spring + MongoDB : potential memory leak messages

java - 从测试运行时 getResourceAsStream ("file") 在哪里搜索?

java - 查看从 Java 类加载器加载的属性文件

java - 将 S3Client 升级到 S3AsyncClient 如何获取 Publisher<ByteBuffer>?