2

什么

我想用jdk.internal.loader.ClassLoaders$AppClassLoader而不是 spring-boots org.springframework.boot.loader.LaunchedURLClassLoader。但是,我不确定这将如何影响 spring-boot 运行时。

为什么

java.lang.InstantiationError我们最近在 java 中调用 Spring 存储库时遇到了parallelStream(). 我了解到并行流中的线程正在使用AppClassLoader,因此无法找到驻留在类加载器层次结构中LaunchedURLClassLoader的子级中的应用程序类。AppClassLoader

如何

spring-boot 文档显示您可以在不使用类加载器的情况下运行解压缩的 spring-boot jar。这很方便地意味着应用程序类也被加载AppClassLoaderparallelStream().

$ java -cp BOOT-INF/classes:BOOT-INF/lib/* com.example.MyApplication

注意:这也是 Intellij IDEA 运行 spring-boot 应用程序的方式。

问题

谁知道 spring-boot 类加载器所做的不仅仅是启用我应该知道的可执行 jar 和 war 文件。我发现文档不够明确。在生产中不使用 spring-boot 类加载器是否安全?

4

0 回答 0