CommonClassLoader或SharedClassLoader加载的Spring如何访问并不在其加载范围内的用户程序呢
Spring 如何 访问 加载 范围
2023-09-11 14:17:25 时间
Question
引自《深入理解Java虚拟机—JVM高级特性与最佳实践》9.2.1,p235
如果有10个WEB应用程序都是用spring来进行组织管理的话,可以把Spring放到Common或Shared目录下(Tomcat5.0)让这些程序共享。Spring要对用户程序的类进行管理,自然要能访问到用户程序的类,而用户程序显然是放在/WEB-INF目录中的。那么被
object 就是调用者,假设它所在类A的ClassLoader是User-defined ClassLoaderA,那么它在doing里面装载B类使用的ClassLoader就是默User-defined ClassLoaderA。我们再假设A只能被User-defined ClassLoaderA装载,B只能被User-defined ClassLoaderB装载,如下图关系:
那么可以看出按照双亲委派模型,object 所在的A类是无法加载B类的,因为模型的特点就是只能向上加载不能向下。回到我们的问题:Spring就好像类A,用户程序就好像类B,那么Spring如何加载用户程序的类呢?实际上在《深入理解Java虚拟机—JVM高级特性与最佳实践》7.4.3,p195,里面已经说了,使用上下文类加载器就可以实现“向下加载”。
相关文章
- 解决IDEA使用Spring Initializr创建项目时,无法连接到https://start.spring.io的问题
- Spring @Scheduled定时任务动态修改cron参数
- 8 -- 深入使用Spring -- 4...1 为什么需要AOP
- Spring Boot:如何解决跨域问题 ?
- 搭建Spring Boot+Spring Cloud微服务
- Spring Boot(二)SpringBoot是如何启动Spring容器源码
- Spring Boot(-)Spring Boot 是如何通过jar包启动的
- Spring Boot之如何解决Maven依赖冲突Maven Helper 安装使用
- 漏洞复现----42、Spring Cloud Gateway Actuator API SpEL表达式注入命令执行(CVE-2022-22947)
- Spring源码分析(三)Spring是如何把元素解析成BeanDefinition对象的
- Spring Boot-intellij idea导入方式搭建SpringBoot
- 注意:Spring Boot 2.7开始spring.factories不推荐使用了,接下来这么玩...
- Spring Boot中如何扩展XML请求和响应的支持
- 《Spring 3.0就这么简单》——1.8 小结
- Spring集成Redis集群(含spring集成redis代码)
- Spring Authorization Server授权服务器入门
- spring的context---ServletContext WebApplicationContext---Spring各种上下文的关系详解
- Spring Boot配置MySQL多数据源
- spring框架漏洞整理(Spring Framework漏洞)
- 【Spring Cloud】如何安装与配置Nacos注册中心?
- spring面试专场第一天(10题开胃菜)
- 【转】Spring学习---为什么要用spring,springMVC
- spring mvc Spring Data Redis RedisTemplate [转]
- Spring Boot 集成 easypoi实现excel的多sheet导入导出
- Spring Boot 单元测试
- Spring IOC 容器初始化过程
- 【spring mvc】Spring MVC 的参数解析器ArgumentResolver阐述
- spring自动注入是单例还是多例?单例如何注入多例?
- 如何做自己的服务监控?spring boot 1.x服务监控揭秘
- spring aop 如何切面到mvc 的controller--转载
- springboot 中spring-data-redis报错:远程主机强迫关闭了一个现有的连接,如何解决?
- Spring用代码来读取properties文件
- spring IOC(Spring 生命周期,先1.构造方式,2,初始化方法,3,目标方法,4,销毁方法)