乐趣区

关于后端:quarkus实战之三开发模式Development-mode

欢送拜访我的 GitHub

这里分类和汇总了欣宸的全副原创 (含配套源码):https://github.com/zq2599/blog_demos

本篇概览

  • 前文咱们曾提到过几种启动形式,有一种用 maven 命令启动的,能够进入开发模式,命令如下:

    mvn quarkus:dev
  • 过后只提到此模式能看到具体零碎信息,并未开展阐明更多信息,实际上,此模式下还有很多实用的性能
  • 作为《quarkus 实战》系列的第三篇,明天咱们一起来学习开发模式 (Development mode),这是 quarkus 为开发者筹备的实用工具

对于开发模式 (Development mode)

  • 开发模式是 quarkus 框架提供的内置工具 (built-in),可间接应用
  • 开发模式提供以下性能:
  • 零碎信息:即前文提到过的,查看对象和配置、批改配置、操作单元测试等性能
  • 热部署:批改 java 代码、资源文件、配置文件等类型的文件后,会立刻失效
  • 断点:这是罕用性能就不多说了,稍后间接操作
  • 接下来理论体验上述性能,用的是《quarkus 实战之二:体验 HelloWorld》一文中创立的 demo 工程

零碎信息

  • 拜访 http://localhost:8080/q/dev/,能够看到丰盛的零碎信息,该地址只在 dev 模式无效:

    热部署

  • 热部署是日常开发的罕用性能,回顾 demo 中的 HobbyResource.java,如下所示,非常简单:

    package com.bolingcavalry;
    
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;
    import java.time.LocalDateTime;
    
    @Path("/actions")
    public class HobbyResource {
    
      @GET
      @Produces(MediaType.TEXT_PLAIN)
      public String hello() {return "Hello RESTEasy" + LocalDateTime.now();
      }
    }
  • 为了演示批改配置能够立刻失效的成果,把代码改成上面这样,留神注解 <font color=”blue”>ConfigProperty</font> 的作用是将指定配置的值注入润饰的成员变量中:
package com.bolingcavalry;

import org.eclipse.microprofile.config.inject.ConfigProperty;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.time.LocalDateTime;

@Path("/actions")
public class HobbyResource {@ConfigProperty(name = "greeting.message")
    String message;

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {return "Hello RESTEasy" + LocalDateTime.now() + " " + message;
    }
}
  • 关上文件 <font color=”blue”>application.properties</font>,减少一个配置:
# 这是一个自定义属性
greeting.message=message from configuration
  • 用命令 <font color=”blue”>mvn quarkus:dev</font> 将利用以开发模式启动,用浏览器拜访 <font color=”blue”>http://localhost:8080/actions</font>,响应如下图,合乎预期,配置的属性能够被失常应用:
  • 当初去批改代码,如下图红框:
  • 再把文件 <font color=”blue”>application.properties</font> 中的配置也改了,我这里改成了 <font color=”red”>abcdef</font>
  • 再去刷新页面,如下图所示,代码和配置的批改都失效了:
  • 以上就是热部署了,接下来去看另一个实用的性能:断点

断点

  • 打断点、单步调试等都是 Java 程序员的日常操作,就不做介绍了,间接聊聊 quarkus 上如何操作吧
  • 在开发模式下,断点性能是默认开启的,不过为了平安起见,quarkus 断点只监听了 <font color=”blue”>localhost</font> 网卡,端口是 <font color=”red”>5005</font>
  • 在代码中打个断点,如下图,我这里用的是 IDEA:
  • 在 IDEA 上新增一个断点,操作如下图:
  • 如下图所示,确认端口号正确:
  • 配置实现后,点击下图红框中的按钮即可发动断点申请:
  • 如果利用失常监听,应该能立刻连贯胜利,如下图:
  • 刷新浏览器,申请会立刻停留在断点地位,一切都是相熟的样子,能够像以前一样查看变量和堆栈,也能够做单步执行和条件断点等操作:
  • 以上是通过 <font color=”blue”>localhost:5005</font> 进行本地调试的操作步骤,如果另外一台电脑想连贯到到这个 quarkus 利用进行近程调式,是连贯不胜利的,因为 quarkus 利用启动后监听的是 localhost 这块网卡,为了可能让其余电脑上的 IDEA 近程连贯到这个利用,咱们须要给启动命令减少一个参数,令其监听本机所有网卡,反对近程 debug 的残缺启动命令如下,另外,debug 参数能够指定端口:

     mvn quarkus:dev -DdebugHost=0.0.0.0 -Ddebug=5006
  • 启动后控制台输入信息如下图,红框中显示监听的端口是 <font color=”red”>5006</font>:
  • 以后电脑的 IP 是 <font color=”blue”>192.168.50.221</font>,所以将断点的地址从 <font color=”blue”>localhost:5005</font> 改为 <font color=”red”>192.168.50.221:5006</font>,如下图:
  • 再尝试连贯断点,如下所示,新的 IP+ 端口连贯胜利:
  • 因为连贯是基于 IP+ 端口的,您齐全能够在 A 电脑上运行利用,在 B 电脑上用 IDEA 近程连贯 A 电脑进行断点操作

热部署的局限性

  • 后面的操作:在 A 电脑用 <font color=”blue”>mvn quarkus:dev -DdebugHost=0.0.0.0 -Ddebug=5006</font> 命令启动利用,在 B 电脑上用 IDEA 连贯到 A 电脑上进行热部署操作,尽管也算是近程,但聪慧的您应该看出了弊病:<font color=”red”>A 电脑上必须有源码 </font>
  • 很多时候,咱们热部署是为了解决特定问题,而呈现问题的电脑可能是测试环境,甚至生产环境,这些中央是不会有源码和 maven 的,此时 <font color=”blue”>mvn quarkus:dev</font> 命令就行不通了,那又该如何解决呢?放弃热部署的便当,只能改一次代码部署一次吗?
  • 好在 quarkus 曾经思考到这种状况,为咱们筹备了近程热部署计划,下一篇文章会具体介绍和操作

欢送关注思否:程序员欣宸

学习路上,你不孤独,欣宸原创一路相伴 …

退出移动版