20.2.5 定制重启类加载器

如上面的重启vs重载部分所述,重启功能是通过使用两个类加载器来实现的。对于大多数应用程序来说,这种方法运行良好,但有时会导致类加载问题。

默认情况下,IDE中打开的任何项目都将使用“重启”类加载器加载,而任何常规的.jar文件将使用“基本”类加载器加载。如果您工作在多模块项目中,而不是将每个模块都导入IDE,那么那你可能需要自己进行一些设置。要做到这一点,你可以创建一个META-INF/spring-devtools.properties文件。

spring-devtools.properties文件可以包含restart.exclude.restart.include.前缀属性。include元素是应该被拉入“重启”类加载器中的项,而exclude元素是应该被推进“基本”类加载器中的项。该属性的值是一个会被应用于类路径的正则表达式。

例如:

restart.exclude.companycommonlibs=/mycorp-common-[\\w-]+\.jar
restart.include.projectcommon=/mycorp-myproj-[\\w-]+\.jar

所有属性的键值都必须是唯一的。只要属性以restart.includerestart.exclude开头,都会被纳入进来。


类路径中的所有META-INF/spring-devtools.properties都将被加载。您可以将文件打包到项目中,也可以打包到项目使用的库中。


书籍推荐