我真不信,这年头还有人能懂SpringBoot的ClassLoader加载机制

本文深入探讨了SpringBoot的ClassLoader加载机制,解释了如何打破Java的双亲委派机制,以及Spring Boot如何在内部实现类加载。文章通过分析Tomcat的类加载策略,展示了Spring Boot如何处理类库隔离,特别是其FatJar技术的应用。最后,总结了Spring Boot的核心模块和自动化配置原理,强调掌握这些基础知识对于微服务架构的重要性。
摘要由CSDN通过智能技术生成

SpringBoot的ClassLoader加载机制

在Spring Boot的嵌入式Web容器原理一节中,我们已经介绍了Spring Boot对Tomcat容器的加载过程,本节我们进一步讲解SpringBoot的ClassLoader加载机制。

熟悉Tomcat工作原理的人应该知道,Tomcat内部实现了自定义的类加载器,打破了Java的双亲委派机制,下面我们先看看什么是双亲委派机制。

我真不信,这年头还有人能懂SpringBoot的ClassLoader加载机制

双亲委派机制

双亲委派机制是指Java的类加载器收到一个类加载请求时,该类加载器首先会把请求委派给父类加载器。每个类加载器都是如此,只有当父类加载器在自己的搜索范围内找不到指定类时,子类加载器才会尝试自己去加载。Java类加载机制如下图所示。

我真不信,这年头还有人能懂SpringBoot的ClassLoader加载机制

我们通常将类加载器分为下面的三种类型。

● 启 动 类 加 载 器 ( Bootstrap ClassLoader ) : 加 载jre/lib/rt.jar。

● 扩 展 类 加 载 器 ( Extension ClassLoader ) : 加 载jre/lib/ext/*.jar。

● 应 用 程 序 类 加 载 器 ( Application ClassLoader ) : 加 载classpath上指定的类库。

如果使用JDK默认的双亲委派模式,Tomcat的类加载器可以加载吗?我们思考一下Tomcat作为一个Web容器的使用场景。

在Web容器中,可能同时需要部署两个以上的应用程序。一个典型的场景是不同的应用程序会依赖同一个第三方类库的不同版本,不能要求同一个类库在同一个服务器中只有一份,因此要保证每个应用程序的类库都是独立的,保证相互隔离。

Tomcat如果使用默认类加载器,是无法加载两个相同

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值