深入SpringBoot之ClassLoader的继承关系和影响-创新互联

前言

为大新等地区用户提供了全套网页设计制作服务,及大新网站建设行业解决方案。主营业务为成都网站设计、成都网站建设、大新网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

对spring boot本身启动原理的分析,请参考:https://www.jb51.net/article/141478.htm

Spring boot里的ClassLoader继承关系
可以运行下面提供的demo,分别在不同的场景下运行,可以知道不同场景下的Spring boot应用的ClassLoader继承关系。

https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-classloader-context

分三种情况:

在IDE里,直接run main函数
则Spring的ClassLoader直接是SystemClassLoader。ClassLoader的urls包含全部的jar和自己的target/classes

========= Spring Boot Application ClassLoader Urls =============
ClassLoader urls: sun.misc.Launcher$AppClassLoader@2a139a55
file:/Users/hengyunabc/code/java/spring-boot-inside/demo-classloader-context/target/classes/
file:/Users/hengyunabc/.m2/repository/org/springframework/cloud/spring-cloud-starter/1.1.9.RELEASE/spring-cloud-starter-1.1.9.RELEASE.jar
file:/Users/hengyunabc/.m2/repository/org/springframework/boot/spring-boot-starter/1.4.7.RELEASE/spring-boot-starter-1.4.7.RELEASE.jar
...


以fat jar运行

mvn clean package
java -jar target/demo-classloader-context-0.0.1-SNAPSHOT.jar

本文标题:深入SpringBoot之ClassLoader的继承关系和影响-创新互联
文章位置:http://myzitong.com/article/pgcdc.html