主要观点总结
本文主要介绍了如何将Class加载到JVM中,以便Spring扫描到该类。提供了四种方案,包括使用-cp参数、SpringBoot启动参数loader.path、自定义类加载器以及改变系统类加载器的方式。同时,也介绍了如何设置类扫描进入Spring容器。
关键观点总结
关键观点1: 实现方案概述
文章介绍了实现将Class加载到JVM中的四种方案,包括使用-cp参数、SpringBoot启动参数loader.path、自定义类加载器以及改变系统类加载器的方式。
关键观点2: -cp方案实现细节
使用-cp参数由AppClassLoader帮我们加载外部Jar。需要指定类加载的路径,但classpath的生效有条件。该方案实现简单,但每个Jar包启动命令都一样,不好区分。
关键观点3: loader.path方案介绍
该方案是SpringBoot扩展的方案,需要使用SpringBoot的启动参数loader.path来指定类加载路径加载其他Jar。需要配置Main-Class为PropertiesLauncher来使loader.path参数生效。该方案比JarLauncher启动慢。
关键观点4: 自定义类加载器方案介绍
该方案需要程序启动的某个节点调用自定义类加载器去加载指定目录下的Jar包。该方案定制化程度高,但加载时间点需要谨慎选择。
关键观点5: 改变系统类加载器行为的风险
通过设置-Xbootclasspath/a或改变Extention ClassLoader的参数java.ext.dirs来实现,但这不安全且不推荐,因为它可能改变系统类加载器的行为。
关键观点6: 类如何扫描进入Spring容器
对于业务Jar包类,可以预先在SpringBoot中指定好扫描包路径。如果不符合包名前缀一致的情况,需要在jar包的META-INF下的spring.factories指定好自动装配的类。
免责声明
免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。
原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过
【版权申诉通道】联系我们处理。