什么
我想用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。这很方便地意味着应用程序类也被加载AppClassLoader
到parallelStream()
.
$ java -cp BOOT-INF/classes:BOOT-INF/lib/* com.example.MyApplication
注意:这也是 Intellij IDEA 运行 spring-boot 应用程序的方式。
问题
谁知道 spring-boot 类加载器所做的不仅仅是启用我应该知道的可执行 jar 和 war 文件。我发现文档不够明确。在生产中不使用 spring-boot 类加载器是否安全?