【问题标题】:spring boot dev tools春季启动开发工具
【发布时间】:2020-04-05 04:11:16
【问题描述】:

我正在 Spring Boot 中编写一个 REST API,它在运行时生成一个类、控制器和存储库。生成代码后,我正在使用开发工具重新编译该类。

我在我的 pom.xml 中包含了开发工具依赖项,并且在我的本地机器上一切正常。但是,一旦我部署到 Ubuntu 服务器并在运行时创建了一个新类,当我尝试访问端点时它会生成一个错误。

{
"timestamp": "2020-04-05T03:26:53.733+0000",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/api/reg"

}

当我关闭 Tomcat 服务器并重新运行应用程序时,之前生成的类及其控制器变得可用并且能够访问端点。

所以我的问题是;一旦在运行时生成类,如何让spring boot重新编译和扫描所有生成的组件,而无需关闭服务器?

【问题讨论】:

    标签: java spring spring-boot spring-boot-devtools


    【解决方案1】:

    问题可能在于您在本地使用某种嵌入式 Tomcat 或 Jetty。它能够在运行时获取更改。

    我假设您将 Tomcat 用作 Web 服务器(不是 jar 本身附带的嵌入式服务器),因为您提到您必须手动重新启动它。不确定 Tomcat Web 服务器是否能够在运行时获取类更改。

    如果您希望 Tomcat 在运行时重新加载类,请尝试查看此 answer

    【讨论】:

      【解决方案2】:

      spring-boot-devtools 在使用哪个 IDE 时是一个有用的功能,因为它为代码更改提供了非常快速的反馈循环,请注意,在运行完全打包的应用程序时,开发工具会自动禁用。

      当使用 java -jar 部署/启动它或使用特定类加载器触发它时,它被禁用。然后它被认为是一个生产应用程序。

      您可以将依赖项标记为可选,这是防止 devtools 应用于其他模块的最佳做法。您可以在此 Spring 文档中参考更多详细信息,

      https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-devtools

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-21
        • 2018-01-13
        • 2020-01-15
        • 2021-07-15
        • 2017-09-11
        • 2015-04-18
        • 2017-06-24
        相关资源
        最近更新 更多