【问题标题】:How do I implement dynamic reloading in Spring (Netbeans)?如何在 Spring (Netbeans) 中实现动态重新加载?
【发布时间】:2015-02-23 12:28:37
【问题描述】:

我习惯于编写 Grails 应用程序,其中我的视图或控制器更改会在保存时自动重新部署。我现在正在整理一个 Spring Web- MVC 应用程序和我想要相同的功能。

我现在使用 Netbeans 作为 IDE,Gradle 作为构建工具和 spring-boot 插件。我记得有人谈论过使用 Jetty 的人,因为它的重启速度如此之快,以至于不再需要动态类重新加载/部署。我听说其他人提到了几年前我曾经使用过的 JRebel。我确信有一种更现代的、弹簧支持/弹簧标准的方法。

我还想知道您是否建议部署为 WAR 或作为具有轻量级内置 Web 服务器的独立可执行 JAR。

建议赞赏。

【问题讨论】:

    标签: spring spring-mvc deployment gradle


    【解决方案1】:

    尚未解决的挑战

    事实证明,Netbeans Gradle 插件不支持开箱即用的“保存时编译” - 这意味着 Java 代理将无法获取更改。作者 kelemen 提出了一种或两种解决方法。这对我来说是没有商量余地的,所以我决定将 IDE 切换到 Eclipse(糟糕的 Gradle 支持),然后是 IntelliJ Idea - 这看起来很有希望。

    Netbeans Gradle 作者评论:https://github.com/kelemen/netbeans-gradle-project/issues/183

    另外,还有 Jrebel,据称可以支持这种 Netbeans / Gradle 组合。使用 JRebel 的试用版,我无法让它轻松工作。 JRebel 支持人员随时为您提供帮助,因此,如果您愿意付出代价,他们的支持团队很可能会解决您的问题。

    JRebel:http://zeroturnaround.com/software/jrebel/

    如果有任何变化,请在下方评论...

    【讨论】:

    • 即使您不购买许可证,他们的支持团队也愿意解决。将问题描述发送至 support@zeroturnaround.com 或在专门的论坛上写信 - 他们会查看的!
    • 我已经切换到带有 SpringLoaded 的 IntelliJ Idea,虽然 IntelliJ 不会在保存时编译,但有一个小构建按钮可以快速运行并编译文件(然后由SprintLoaded),允许相当快速的重新加载。显然,新的 IntelliJ(目前 EAP 中的 14.1)增加了对 Spring Boot 的支持。不确定这是否包括对加载的额外支持,但我对当前的 Idea 解决方案非常满意。
    【解决方案2】:

    Spring 也有自己的代理:https://github.com/spring-projects/spring-loaded。在开发时为什么不直接使用 Spring Boot 提供的嵌入式 Tomcat/Jetty。

    【讨论】:

    • 嗨@Vaelyr,有什么想法可以与 Gradle / Netbeans 一起使用吗?
    • 运行它与您使用的 IDE 或构建工具无关。只需下载 jar,在启动应用程序时将 java 代理添加到您的路径即可:youtube.com/watch?v=GTrNkhVnJBU
    • 嗨@Vaelyr,我还没有在Netbeans 中找到添加VM 参数的地方。还有什么想法吗?
    • 这真的取决于你如何启动你的应用程序。如果是通过 IDE 或 gradle 任务,你应该从谷歌的任何地方找到如何添加 vm args。这是很常见的事情。
    【解决方案3】:

    HotswapAgent 也支持 Spring 类重新加载。它是 JRebel 的免费替代品。

    【讨论】:

    • 这看起来很有希望!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多