前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Quarkus学习一 - getting-started

Quarkus学习一 - getting-started

原创
作者头像
eeaters
修改2022-06-14 11:06:33
9210
修改2022-06-14 11:06:33
举报
文章被收录于专栏:阿杰阿杰
  • 为什么学习Quarkus
  • 本地环境
  • 学习流程
    • 通过终端创建项目
    • Bean的注入
  • 总结

为什么学习Quarkus

从效果上来看SpringBoot3.0和Quarkus要做的事情是相同的,但是SpringBoot3.0毕竟会有很多历史包袱,很多标准规范在Spring中是通过适配的方式来实现的,

GraalVM - 云原生时代的 Java 笔记 博客中在对GraalVM诞生背景中提到 Quarkus是在GraalVM上另起炉灶开发新的Java应用;

Quarkus相对比较新,社区也够活跃,想来目前很多标准规范也是严格执行的,基于此,学习下Quarkus

参考网址

没有特别多的Quarkus的文档,因此主要以官方文档为主进行学习

https://quarkus.io/guides/getting-started

本地环境

  1. JDK<官网要求最低11>
代码语言:javascript
复制
$ java -version
java version "18.0.1.1" 2022-04-22
Java(TM) SE Runtime Environment (build 18.0.1.1+2-6)
Java HotSpot(TM) 64-Bit Server VM (build 18.0.1.1+2-6, mixed mode, sharing)

2. Maven<官网要求最低3.8.1>

代码语言:javascript
复制
$ mvn -v
Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: D:\framework\develop\maven\apache-maven-3.8.6
Java version: 18.0.1.1, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk-18.0.1.1
Default locale: zh_CN, platform encoding: UTF-8
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

学习流程

通过终端创建项目

  1. 创建项目:

2. 使用idea打开项目

  • 在Project Structure中修改下项目的JDK版本,Settings中修改Maven的版本.reLoad一下项目
  • 这一步因我的电脑的jdk从17→18,maven也是刚升级至3.8.6; 出现过打包不成功的问题,最终解决环境问题后均回复正常

3. 项目介绍

  • 一个maven结构的项目
  • 一个暴露了/hello的web端口 + 对应的Test单元测试类
  • 启动项目的首页
  • dockerfile的样例文件,包含了native模式和jvm模式
  • 一个空的应用配置文件

4. 单测

  • 直接Run某一个测试方法
  • 在控制台: ./mvnw test 运行所有测试类

运行结果如下(启动快):

代码语言:javascript
复制
2022-06-13 15:38:05,060 INFO  [org.jbo.threads] (main) JBoss Threads version 3.4.2.Final
2022-06-13 15:38:06,692 INFO  [io.quarkus] (main) getting-started 1.0.0-SNAPSHOT on JVM (powered by Quarkus 2.9.2.Final) started in 2.276s. Listening on: http://localhost:8081
2022-06-13 15:38:06,693 INFO  [io.quarkus] (main) Profile test activated.
2022-06-13 15:38:06,693 INFO  [io.quarkus] (main) Installed features: [cdi, resteasy-reactive, smallrye-context-propagation, vertx]
2022-06-13 15:38:08,166 INFO  [io.quarkus] (main) getting-started stopped in 0.034s

5. 启动项目

代码语言:txt
复制
- `.\mvnw compile quarkus:dev`
- maven如何debug, 之前的 [利用前端编译简化Feign降级代码](https://cloud.tencent.com/developer/article/1990855)有写过

6. 本地访问

代码语言:txt
复制
- 访问localhost:8080 看首页
- 访问localhost:8080/hello 进行web接口访问

Bean的注入

  1. 评估一下这个Bean的作用域,作用于比Spring的要丰富的多, 比如官方用例的 ApplicationScoped. 等同于Spring中常用的全局单例Bean对象
  2. 使用标准的Inject注解进行依赖注入

代码:

代码语言:javascript
复制
@Path("/hello")
public class GreetingResource {

    @Inject
    GreetingService greetingService;

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        return "Hello from RESTEasy Reactive";
    }

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    @Path("/greeting/{name}")
    public String greeting(String name) {
        return greetingService.greeting(name);
    }
}

// ====

@ApplicationScoped
public class GreetingService {

    public String greeting(String name) {
        return name;
    }

}

总结

  1. 简单了解了Quarkus的基本使用
    • 如何暴露web端口
    • 如何依赖注入

2. dev启动时,在首页可以看到有多少Bean,有多少web端点, 类似默认spring-boot-actuator的部分功能

3. dev启动时,服务拥有热部署的功能,类似XRebel的热部署功能,

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么学习Quarkus
  • 参考网址
  • 本地环境
  • 学习流程
    • 通过终端创建项目
      • Bean的注入
      • 总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档