创建第一个Quarkus应用程序
第一次创建 Quarkus 应用程序有很多方法: 手动创建项目 pom.xml 或 build.gradle 文件,添加 Quarkus 依赖项,设置和配置插件,以及定义资源文件夹。 这是一个麻烦和无趣的方法!使用 Maven 和 Quarkus 插件构建项目骨架。 浏览 https://code.quarkus.io 并选择所需的依赖项。 这是最简单、最快捷的开始方式,也是我将使用的方法。
前往 https://code.quarkus.io ,您将看到图 1 中的页面。 我们已经圈出一些关键部分来详细解释它们。
页面顶部是生成项目的 Quarkus 版本。 在它的左下方,您可以自定义将为项目设置的 Group 和 Artifact 名称。 如果需要,这些也可以稍后更改; 如果您忘记自定义它,也没关系 。
在右侧,用户可以决定是否要将 Starter code 添加到项目中。 默认值为 yes,因此如果您选择任何带有 CODE 标记的扩展,例如 RESTEasy JAX-RS ,将为项目生成该扩展的 starter code。 页面顶部下方是所有可用 Quarkus 扩展的列表。 有很多扩展可用; 屏幕截图仅显示适合单个页面的屏幕截图。 使用每个复选框来选择要包含在项目中的特定扩展。
图 1 Quarkus 项目选择
最后,如果您不想滚动浏览所有扩展程序,请开始在所有扩展程序上方的搜索框中输入术语。 当您输入时,其下方的扩展名列表将过滤,仅显示与您的搜索条件匹配的扩展名。 选择扩展后,它们会出现在 "Generate your application." 旁边的 Selected Extensions 区域下。
图 2 显示当我们即将生成应用程序时的屏幕。
图 2 Quarkus 项目生成
您可以看到我们选择不生成任何 Starter Code ,并且选择了 RESTEasy Classic [quarkus-resteasy] 扩展。 我们现在坚持使用普通的 JAX-RS。 我们将在后续探讨更具响应式的 JAX-RS。
当我们将鼠标悬停在 "Generate your application," 上时,我们可以决定将项目下载为 ZIP 文件或将其发布到 GitHub 仓库。 现在,我们将下载为 ZIP 文件。 该文件将自动下载,其名称与 Artifact 名称匹配。 下载完成后,将 ZIP 文件解压缩到一个目录。
完成后,我们打开一个终端窗口并切换到生成的项目被提取的目录。在终端执行以下命令 > mvn quarkus:dev
前面的命令在实时重新加载中启动 Quarkus,使我们能够快速迭代代码并立即看到影响。 成功启动将有终端输出,如下所示: __ ____ __ _____ ___ __ ____ ______ --/ __ / / / / _ | / _ / //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ / --________/_/ |_/_/|_/_/|_|____/___/ 2023-03-19 18:10:58,444 INFO [io.quarkus] (Quarkus Main Thread) code-with-quarkus 1.0.0-SNAPSHOT on JVM (powered by Quarkus 2.16.4.Final) started in 2.878s. Listening on: http://localhost:8080 2023-03-19 18:10:58,463 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated. 2023-03-19 18:10:58,463 INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, smallrye-context-propagation, vertx]
浏览器中打开 http://localhost:8080 ,你会看到 Resource not found 。 不好了! 什么地方出了错?
实际上,并没有出什么问题。 眼尖的读者可能已经注意到启动日志仅将 cdi 列为已安装功能。 RESTEasy 怎么样? 我们在创建项目时选择了它的扩展名。 查看 pom.xml 内部,您将看到依赖项如下: io.quarkus quarkus-resteasy io.quarkus quarkus-arc io.quarkus quarkus-junit5 test
RESTEasy 肯定是作为依赖项存在的,那么发生了什么? 在构建过程中,Quarkus 发现实际上没有任何使用 REST‐Easy 的代码存在,因此卸载了该功能并可以将其删除以节省内存。 让我们现在解决这个问题。
在 Quarkus 仍在运行的情况下,在 /src/main/java 中创建 org.acme 包。 现在在包中创建一个名为 MyResource 的类,内容如下所示:package org.acme; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/") @Produces({MediaType.TEXT_PLAIN}) public class MyResource { @GET public String message() { return "Hi"; } }
注意: 您可能想知道为什么在前面的代码片段中没有一个导入行是 Quarkus 特定的。 Quarkus 通过利用不断增长的 50 多个同类最佳库的列表,提供了一个有凝聚力的全栈框架。 在前面的示例中,我们使用 JAX-RS,这是一种构建 HTTP 和 REST API 的简单但高效且灵活的方法。
刷新 http://localhost:8080。 哇,我们现在在浏览器中看到了 Hi ; 发生了什么? 查看终端窗口如下: INFO [io.qua.dep.dev.RuntimeUpdatesProcessor] (vert.x-worker-thread-7) Changed source files detected, recompiling [{pathToProject}/code-with-quarkus/src/main/java/org/acme/MyResource.java] INFO [io.quarkus] (Quarkus Main Thread) code-with-quarkus stopped in 0.037s __ ____ __ _____ ___ __ ____ ______ --/ __ / / / / _ | / _ / //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ / --________/_/ |_/_/|_/_/|_|____/___/ INFO [io.quarkus] (Quarkus Main Thread) code-with-quarkus 1.0.0-SNAPSHOT on JVM (powered by Quarkus 1.11.1.Final) started in 0.195s. Listening on: http://localhost:8080 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, resteasy] INFO [io.qua.dep.dev.RuntimeUpdatesProcessor] (vert.x-worker-thread-7) Hot replace total time: 0.291s
我们可以看到 Quarkus 注意到对 MyResource.java 的修改,停止,然后重新启动。 查看已安装的功能,我们看到它现在包含了 resteasy 。 多么酷啊? 更好的是,服务器在 300 多毫秒内停止并重新启动。
我们为什么不探索更多的实时重新加载以更好地感受真正的开发者喜悦! 在 mvn quarkus:dev 仍在运行的情况下,在浏览器中打开 http://localhost:8080/welcome(图 3)。
图 3
不好了,我们有一个错误!
不要太害怕; 我们确实期待它,因为我们还没有任何东西可以响应 /welcome 端点。 但是,Quarkus 为我们提供了一些链接,以帮助根据它对应用程序的了解来诊断问题。 我们看到了有效端点的列表——在这种情况下,/ 上只有一个 HTTP GET。
在 "Additional endpoints," 下,有一些端点可以在开发应用程序时提供帮助。 在此示例中,我们有与 ArC 相关的端点,这是基于 Quarkus 的上下文和依赖注入 (CDI) 的 bean 容器,以及到开发人员控制台的链接。 单击开发者控制台链接将带您进入其主页。
现在没有很多,但我们需要记住,我们添加的唯一扩展是 RESTEasy。 随着我们使用更多扩展来增强应用程序,开发人员控制台将提供更多选项和功能。 我们在那里走了一条支线,所以让我们回到解决页面加载失败的问题上! 随着 /welcome 页面在浏览器中打开失败,回到源代码并创建一个名为 WelcomeResource 的新类如下: @Path("/welcome") public class WelcomeResource { @GET public String welcomeMessage() { return "Welcome to Quarkus!"; } }
编写完类后,返回浏览器并单击 Refresh。
触发 HTTP 请求会导致 Quarkus 检查自上次请求以来是否有任何文件被修改,因为我们正在运行实时重新加载。 Quarkus 注意到 WelcomeResource 的存在,对其进行编译,然后重新启动服务器。 如果您像我们一样,您可能没有意识到幕后发生的一切,因为浏览器立即给出了预期的响应。
这是关于第一次使用 https://code.quarkus.io 创建 Quarkus 项目以及体验使用 Quarkus 实时重新加载带来的轻松开发的大量信息。 它确实有缺点,包括在编译和重新启动期间喝咖啡的机会较少。 我们将继续探索实时重新加载可以完成的所有章节,但您可以自己试一试,添加新的扩展,看看可以在不停止的情况下完成什么!
那么下一篇我们看看在 Kubernetes 使用 Quarkus!
这所大学用200多件艺术作品表达对祖国的祝福翰墨丹青歌盛世,光影流彩颂党恩。10月20日上午,湖南工艺美术职业学院师生艺术作品展在致美楼四楼展厅开幕,共展出师生创作的书画工艺美术艺术设计类作品200余件。学校党委书记陈鸿俊指
最伤感最悲伤的句子,你还知道有哪些?1。我不怕离别时的伤感,因为我会期待着再次相逢的喜悦。我最怕这一转身我们再也不见。2。这漆黑的夜,寂寞浸占我的心,这冰冷的雨慢慢被我的心转化成冰,我就像这孤寂的街道形单影只。3。你
抄书打卡第5天信任是什么?信任一把双刃剑,一面是真情,一面是伤害。被人信任,是一种幸福,有人信任是一种傲娇。恋人之间失去了信任,就会失去爱情朋友之间失去了信任,就会断了关系商人失去了信任,就会做不了买卖1恋
余生,做一个安静淡然的人人生,不是追逐最终的一个结果,而是享受这个过程所带来的体验,让我们携一颗从容淡泊的心,走过山重水复的流年,笑看风尘起落的人间。真正的平静,不是避开车马喧嚣,而是在心中修篱种菊,尽管
善良就是救赎每个人或多或少的多有点自己的私心。我们的私心不止伤害了别人,还伤害了我们自己。当有私心的时候,这就是一个恶性循环的开始。善良就是一个救赎,善良不是单纯的对别人好,是让自己的心给个安
小鹏汇天旅航者X2迪拜首飞,收获大批海外粉丝最近,小鹏汇天将中国智造带到了海外,那就是小鹏汇天飞行汽车旅航者X2在迪拜完成了首次公开飞行,同时,这也是继9月份获得迪拜民航局为X2颁发特许飞行许可后,在著名的GITEXGLOB
给茶友们提个醒这2类茶都是假的,宁愿不喝也别买,全是添加剂茶叶在中国有着悠久的历史,自古以来,喝茶都是中国人主要的消遣方式之一。随着茶行业的不断发展,在名茶层出不穷的同时,茶叶市场也开始出现鱼目混珠的情况。那些唯利是图的茶商想要以低成本谋
第一观察丨团结成一块坚硬的钢铁习近平总书记10月17日上午参加党的二十大广西代表团讨论时强调,全党全国各族人民要在党的旗帜下团结成一块坚硬的钢铁,心往一处想劲往一处使,推动中华民族伟大复兴号巨轮乘风破浪扬帆远航
数据显示2022年是意大利有记录以来最热年份意大利国家研究委员会当地时间10月19日公布的数据显示,截至目前,2022年是该国自1800年有温度记录以来最热的一年。报告称,2022年意大利的平均温度比1990年至2020年三
为了整车静谧性,阿维塔11的工程师到底有多拼?提起纯电动车,大部分人的第一反应就是安静,大家都认为新能源车的NVH应该更容易控制。其实恰恰相反,正是因为缺少了发动机的掩蔽,所以路噪风噪等更为明显,而这些声音更加不可控,处理起来
蓝牙智能音箱在发展的道路上还有哪些被诟病的痛点随着蓝牙技术被广泛应用,蓝牙耳机与蓝牙智能音箱等蓝牙无线产品已经屡见不鲜,尤其是音箱,随着快节奏生活方式的不断更新,蓝牙智能音箱为了满足人们不同的需求似乎已经发展到了功能非常丰富的
妈妈到了更年期,怎么办我在头条对她说如果哪一天你发现一向心情开朗的妈妈突然变得郁郁寡欢,一向性情温柔的妈妈突然容易暴躁,一向乐呵呵的妈妈突然变得敏感焦虑,如果你的妈妈开始喜怒无常,记忆力减退,那么这个时
这个安胎良方,备孕的不容错过怀孕过程中自然流产是很多准妈妈挥之不去的心理阴霾。中医称之为滑胎。引起滑胎的原因有很多。比如现代人喜欢纵欲,享受鱼水之欢,过度透支先天肾精现代女性独立,社会地位平等,以前的女性在家
这两关于女性生育的提案,看起来不错大家都知道,最近两会正在召开中,而在提案当中,有一些是关于女性生育的提案,今日就让我们共同了解一下,如果能通过,那将是对女性生育的重大福利。按照按照最低工资标准给育儿家庭发育补贴。
孩子以后能长多高,看这两个部位的长度就能预测,不用等成年文菁妈01hr上个星期坐地铁的时候,我看到了一起非常尴尬的事情。一个个子不到1米5的小女孩挤上了地铁,旁边一对夫妻领着一个5岁的小孩子坐在地铁上,这时候爸爸看到这个小女孩挤上地铁被
当爹要趁早!研究发现年纪越大遗传给孩子突变基因越多!来源健康时报健康时报权威健康资讯,因专业而信赖!常听说老来得子,但其实当爹也是要趁早!年纪越大遗传给孩子突变基因越多!2023年1月自然生态与进化(Natureecologyevo
全国两会捷报频传!终于有深得民心的建议,如果通过就能造福百姓前言两会正在紧锣密鼓地召开中,代表们建言献策,纷纷提出未来能够影响老百姓生活的提案。代表们所处的阶层不同,提出的建议也各不相同。但是就普通老百姓来说,需要那些真正能够减轻自己压力,
智行两会新华三以数智创新赋能水利事业高质量发展加强农田水利和高标准农田等基础设施建设。加强城乡环境基础设施建设,持续实施重要生态系统保护和修复重大工程。2023年政府工作报告3月9日是一年一度的保护母亲河日,奔腾在华夏大地上的
拓宽企业直接融资渠道全国首单公募中长期CB落地本报记者郝亚娟张荣旺上海北京报道近日,江苏华靖资产经营有限公司2023年度第一期资产担保债务融资工具(CoveredBond,以下简称CB)成功发行,这是自中国银行间市场交易商协会
代表声音张学武以企业为主体构建食品科技创新体系随着新一代前沿技术与装备在食品领域的融合应用,驱动全球食品产业向高技术全营养智能化可持续方向快速发展,科技创新成为越来越多食品企业发展的战略选择。全国两会期间,全国人大代表盐津铺子
中国的企业家不是在监狱,就是在监狱的路上龙王卖伞,永无晴天,解决问题的人往往就是那个制造问题的人。有人称中国的企业家不是在监狱,就是在通往监狱的路上。这句话或许有些夸张,但却一次次直击人心。按照现行法律逻辑和罪名,中国的
如何恢复民营企业的信心?这段时间,关于如何恢复民营企业信心成为大家讨论的重点。这种论调也说明在过去的几年内民营企业确实受到了很大的打击,市场大环境是一方面的因素,人为因素是不可忽略的一部分。目前之所以高调