当前位置: 首页 > 知识库问答 >
问题:

JavaEE部署中的Spring类加载机制

哈骞仕
2023-03-14

我想了解如何使用Spring容器的ClassLoader。

下面是一个例子:部署一个包含所有必要的罐的WAR,以便在tomcat的网络容器中启动Spring容器。

我的问题是:
1。我认为Spring容器类本身是由web容器创建的WAR类加载器加载的,对吗
2。取消部署WAR时,spring容器加载的类[](java.lang.Class对象)是如何卸载的。spring本身有一个类加载器吗?还是使用webcontainer提供的classloader
3。如果我的Spring容器正在继承bean(使用web.xml中的parentContextKey),并且如果父bean中的一个具有lazy init=true,并且被部署的WAR请求,那么谁将加载和卸载请求bean的类对象?

提前谢谢

共有2个答案

夏涵畅
2023-03-14

你的web应用可以基于Spring,也可以仅仅基于JSP

邹英发
2023-03-14

所有这些生命周期都是由容器维护的,例如,你通过在web.xml中声明它来使它意识到

RequestContextListener向上下文公开“请求”范围
org。springframework。网状物上下文要求RequestContextListener

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

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

因此,生命周期基本上得到了处理。你也可以有自己定制的监听器来处理这些生命周期

看看有没有帮助

 类似资料:
  • 我有一个工作的Spring Boot应用程序,当我创建一个JAR文件并执行它时,它工作得很好。

  • 主要内容:1.类加载过程,2.类加载时机,3.类加载器,4.类加载机制:当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步骤,所以有时也把这个3个步骤统称为类加载或类初始化。 1.类加载过程 1.1加载 加载指的是将类的class文件读入到内存,并为之创建一个java.lang.Class对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Cl

  • 我试图通过运行“grailsdevwar”命令并将war手动部署到Tomcat容器中,在测试环境中部署grails应用程序。该应用程序没有运行,我看到几个错误日志,如下所示: ./logs/catalina.out:2014-01-13 09:18:53,415 [主] 错误上下文。GrailsContextLoader - 初始化应用程序时出错:创建名为“instanceTagLibraryAp

  • 我正在Windows 7中使用Dist命令准备部署。(播放2.0.4) zip生成成功,但当我尝试使用以下命令启动应用程序时: 控制台显示此错误: 错误:无法找到或加载主类e:\部署\test-1.0-SNAPSHOT\lib\ch.qos.logback.logback-core-logback-core-1.0.0.jar 我已经检查过这个jar是由Play Framework在<代码>c:\

  • 一、类加载机制 1.定义: 把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。 在Java语言里,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会为Java应用程序提供高度的灵活性,Java里天生可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点来实现的。

  • 我遇到了一个Spring Boot应用程序的麻烦,它没有加载一个包含2个bean的配置类。奇怪的是,同一个包中的另一个config类会被加载。 这两个配置类中都有。没有加载的那个也有。 base packages值引用加载的jar文件中的包。 我使用的是和。当我打开Spring调试时,它显示正在找到并加载另一个配置类,但它只是跳过另一个。不会抛出异常--完全没有错误。 如果代码没有运行,这是一回事