java - Java或SpringBoot中的“更新类路径”是什么意思?
问题描述
我正在阅读有关开发人员工具的 Spring Boot 参考指南,其中提到了以下内容:
由于 DevTools 监控类路径资源,触发重启的唯一方法是更新类路径。更新类路径的方式取决于您使用的 IDE。在 Eclipse 中,保存修改过的文件将导致类路径更新并触发重新启动。在 IntelliJ IDEA 中,构建项目 (
Build → Make Project
)将具有相同的效果。
我很困惑,“更新类路径”是什么意思?更确切地说:
- 如果我在 IDE 中修改文件,它似乎不会更新类路径,这是正确的吗?
- 如果我在 IntelliJ 中单击“构建”,它似乎确实更新了类路径,但 IDE 究竟做了什么?
解决方案
需要明确的是,类路径指定项目中用户定义类的位置(路径)。通常,在更改类(文件)时需要手动重新启动 Spring Boot 应用程序以查看实际更改。
正如您所提到的,spring-boot-devtools
提供自动重启:
每当类路径上的文件更改时,使用 spring-boot-devtools 的应用程序会自动重新启动。在 IDE 中工作时,这可能是一个有用的功能,因为它为代码更改提供了一个非常快速的反馈循环。默认情况下,类路径上指向文件夹的任何条目都会被监视更改。请注意,某些资源(例如静态资产和视图模板)不需要重新启动应用程序。
由于 DevTools 监控类路径资源,触发重启的唯一方法是更新类路径。更新类路径的方式取决于您使用的 IDE。在 Eclipse 中,保存修改后的文件会导致类路径更新并触发重新启动。在 IntelliJ IDEA 中,构建项目(Build -> Build Project)具有相同的效果。
这意味着,对于 IntelliJ,在构建项目(并因此更新类路径)时,开发工具将触发应用程序的重新启动。更简单的是,还可以将 IntelliJ 设置为自动构建和激活compiler.automake.allow.when.app.running
(这里是如何)。
推荐阅读
- python - Python ctypes 与返回 const 整数的 DLL 导出有关
- google-assistant-sdk - Google Home/Assistant - 如何创建可添加到 Google Home“生态系统”的“与 Google 一起使用”的设备?
- node.js - Azure 应用服务 (Windows) - SvelteKit 应用的 Nodejs ES 模块问题
- javascript - 如何从具有逻辑表达式结构的字符串制作多级对象?
- spring-boot - 在 Spring Boot 的集成测试期间模拟 rest api 调用
- c# - 用于在 C# 中获取字符串中的数值的正则表达式
- arrays - 如何从另一个工作簿复制相应的单元格值?
- javascript - res.status 不是函数 Puppeteer
- azure-synapse - azure synapse - 无服务器 sql 池数据库在数据选项卡中不可见
- c - 从字符串到字符串的简单 strcpy 会使整个程序崩溃