【问题标题】:IntelliJ IDEA Community Edition and Spring slow reload with Spring DevToolsIntelliJ IDEA 社区版和 Spring 慢速重载与 Spring DevTools
【发布时间】:2020-04-24 17:10:12
【问题描述】:

我知道 IDEA CE 不支持 Spring,但我仍然可以通过对自动完成的良好支持进行开发,这对我来说已经足够了。

我遇到的问题是 IDE 需要 5 到 7 秒才能使用我在按 Ctrl + S 后所做的更改重新加载服务器。所以,我搜索了更多可以修改的选项,并尝试了这些:

但这并不能解决问题。

虽然我知道我可以使用 VSCode,因为 Java 支持非常好,并且使用 Spring 重新加载非常快,但对于 Kotlin 支持,没有足够好的扩展。因此,如果可能的话,我想找到一个修复程序来减少服务器重启的延迟。好像是故意逼你买专业版的。

【问题讨论】:

  • 此信息不足以理解问题。您的意思是 .class 文件在 7 秒后在磁盘上更新,或者 Spring 应用程序在 7 秒后重新加载,而更改的类看起来比这更快? Minimal, Complete, and Verifiable example 有重现的确切步骤会很高兴。 IntelliJ IDEA 社区中肯定没有任何东西会特别减慢它以迫使您购买 Ultimate。它在 Apache 2.0 许可下是开源的,您可以尝试查找执行此操作的代码(您不会)。
  • 弹簧在 7 秒后重新加载。要重现,创建一个新项目并使用 IDEA。如果不使用 IDE,为什么同一个项目在 VSCode 上的事情会变得更快更好? ://
  • 这可能取决于项目的配置方式以及 pom.xml 中有哪些依赖项,因此请提供一个指向 GitHub 项目的链接,该链接将重现问题。
  • 你可以从 Initializr 创建一个新项目。除此之外,我没有任何东西。它甚至除了 Web 依赖之外什么都没有……
  • 呸。我将只使用 Eclipse,因为它至少似乎对 Kotlin 也有很好的支持,并且在保存时也没有任何延迟。这一切都在 IDEA 上。

标签: java spring intellij-idea jetbrains-ide


【解决方案1】:

您无需使用 IntelliJ IDEA Community 或 Ultimate 的自动编译或 DevTools 即可在调试模式下热交换类。如果要在 Ctrl+S 上编译,请将此快捷方式分配给 Build | Build Project 操作(设置(macOS 上的首选项)| 键盘映射 | 主菜单 | 构建 | 构建项目,右键单击,Add Keyboard Shortcut)。

IDE 将热交换更改的类,并且更改将在不到一秒的时间内在浏览器中可用:

示例项目:boot-hotswap-demo.zip。

步骤:

  1. 点击Debug按钮启动应用
  2. 在网络浏览器中打开 http://localhost:8080/
  3. 观察Greetings from Spring Boot!!!输出
  4. 将HelloController.java 中的字符串更改为其他内容
  5. 构建 |构建项目(或 Ctrl+S,如果您将其分配给此操作)
  6. 在浏览器中重新加载页面,不到一秒的时间内观察变化,IDE 会显示关于重新加载类的通知。

如果您想依赖 DevTools,您还可以取消注释 spring-boot-devtools 中的 spring-boot-devtools 依赖项,它会在更改时触发服务器重新启动。它有点慢,但肯定不是你描述的 5-7 秒。

【讨论】:

  • 谢谢。我也已经知道如何构建它了。抱歉,我忘记提及了,但我确实对此有疑问。在大型项目中这样做会不会很昂贵?
  • IntelliJ IDEA 构建操作快速且完全增量。此外,它与自动编译为您做的没有什么不同。
  • 我下载了你的演示源,但它不工作。浪费我的时间!!! ???
  • 这不能解决我的问题。我在 application.properties 文件中修改了一个变量,但没有收到答案中建议的“x 类已重新加载”的消息,但“无法解析配置属性 myUrl”,这是我在 application.properties 文件中更改的属性。我的 pom.xml 中包含 spring-boot-devtools,我打算保留它,因为其他开发人员更喜欢使用 eclipse,它可以正常工作并且热重载快速且有效。
【解决方案2】:

我们在项目中使用了 2 个注释处理器: annotationProcessor “org.springframework.boot:spring-boot-configuration-processor” 和 注释处理器“org.projectlombok:lombok”。

龙目岛工作正常。但是如果 spring-boot-configuration-processor 处于活动状态 - 热插拔总是重新加载所有类,这对我的项目来说需要超过一分钟,完全重启应用程序要快得多。

当我需要热插拔时,我会在启动之前评论该处理器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 2014-03-29
    • 2017-10-21
    • 2020-01-23
    • 1970-01-01
    相关资源
    最近更新 更多