当前位置: 首页 > news >正文

教育发展基金会网站建设cmsv7

教育发展基金会网站建设,cmsv7,网站价值 批量查询,信息产业部网站备案Quarkus初探 背景安装Quarkus安装Quarkus CLI 创建Quarkus项目运行Quarkus初探代码修改一下代码 数据持久化创建PanacheEntiry写入数据读取数据 Dev Service使用外部数据库区分dev和prod 构建native应用#xff08;依赖Graalvm#xff09; 背景 最早是在Infoq上了解到Quarku… Quarkus初探 背景安装Quarkus安装Quarkus CLI 创建Quarkus项目运行Quarkus初探代码修改一下代码 数据持久化创建PanacheEntiry写入数据读取数据 Dev Service使用外部数据库区分dev和prod 构建native应用依赖Graalvm 背景 最早是在Infoq上了解到Quarkus这个框架内部集成了Vertx对native-image有着非常好的支持启动速度非常快占用内存很小相较于Springboot,最近有时间就来体验一下。 安装Quarkus Quarkus也是基于Java的微服务框架所以想要体验Quarkus需要满足以下条件 JDK 17配置配置好了JAVA_HOMEApache Maven 3.9.6docker或podman可选Quarkus CLI可选Graalvm可选用于构建Native应用 安装Quarkus CLI Quarkus CLI中提供了很多命令可以帮助我们快速的创建、运行Quarkus项目。这两天体验下来Quarkus CLI应该是主要对mvn的各类命令进行了集成Quarkus CLI的命令相较于mvn来说更加便捷也是推荐大家安装体验一下。目前官方支持以下几种安装方式 JBang - for Linux, macOS and WindowsSDKMAN! - for Linux and macOSHomebrew - for Linux and macOSChocolatey - for WindowsScoop - for Windows 我目前这台机器是通过SDKMAN来管理JDK版本的这里选择了使用SDKMAN进行安装 sdk install quarkus 安装完成之后验证一下 quarkus --version 3.9.2 创建Quarkus项目 通过quarkus执行以下命令 quarkus create app org.acme:getting-started-dev-services \--extensionrest cd getting-started-dev-services或者通过maven mvn io.quarkus.platform:quarkus-maven-plugin:3.9.2:create \-DprojectGroupIdorg.acme \-DprojectArtifactIdgetting-started-dev-services \-Dextensionsrest cd getting-started-dev-services如果想要创建一个gradle项目可以追加以下参数 -DbuildToolgradle 或 -DbuildToolgradle-kotlin-dsl 对于使用windows的同学有以下两点需要注意: 如果使用cmd不要使用\分割命令所有命令都要放在同一行中如果使用PowerShell-D的参数需要使用双引号括起来e.g.-DprojectArtifactIdgetting-started-dev-services 运行Quarkus quarkus devor ./mvnw quarkus:devor ./gradlew --consoleplain quarkusDev正常启动后可以看到如下信息 __ ____ __ _____ ___ __ ____ ______ --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ , / /_/ /\ \ --\___\_\____/_/ |_/_/|_/_/|_|\____/___/ 2024-04-10 11:22:05,350 INFO [io.quarkus] (Quarkus Main Thread) code-with-quarkus 1.0.0-SNAPSHOT on JVM (powered by Quarkus 3.9.2) started in 0.842s. Listening on: http://localhost:80802024-04-10 11:22:05,351 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated. 然后我们在浏览器里访问 http://localhost:8080/hello应该可以看到如下信息 Hello from Quarkus REST 初探代码 我们使用IDE打开刚刚创建的项目可以看到只有一个很简单的类GreetingResource package org.acme;import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.MediaType;Path(/hello) public class GreetingResource {GETProduces(MediaType.TEXT_PLAIN)public String hello() {return Hello from Quarkus REST;} }相交于Springboot来说这里不需要定义一个Application启动类再增加一个Controller一个简简单单的GreetingResource就完成了所有的功能这里使用到的注解也都是jakarta的标准注解。 修改一下代码 public String hello(RestQuery String name) {return Hello name; }然后我们访问http://localhost:8080/hello?nameBloom 这时我们会看到这样一条消息: Hello Bloom. quarkus dev模式支持代码热部署在我们修改代码之后无需重启调试修改的时候会非常方便。 对应的我们修改一下单元测试 src/test/java/org/acme/GreetingResourceTest.java将 .body(is(“Hello from Quarkus REST”)); 修改为 .body(containsString(“Hello”)); 不然下次启动会报错quarkus默认启动时会先执行单元测试 数据持久化 在进行这一步之前建议把我们本地的容器服务启动(docker或podman)起来看看接下来会发生什么 创建PanacheEntiry quarkus extension add hibernate-orm-panache jdbc-postgresql 或者 ./mvnw quarkus:add-extension -Dextensions‘hibernate-orm-panache jdbc-postgresql’ 官方示例提供的是postgresql你也可以替换为mysql。 创建一个Greeting.java import io.quarkus.hibernate.orm.panache.PanacheEntity; import jakarta.persistence.Entity;Entity public class Greeting extends PanacheEntity {public String name; }Panache是一个基于Hibernate的orm框架PanacheEntity类似于Spring-Data中的JpaRepository中提供了大量的方法方便我们进行CRUD的操作 写入数据 GET Transactional Produces(MediaType.TEXT_PLAIN) public String hello(QueryParam(name) String name) {Greeting greeting new Greeting();greeting.name name;greeting.persist();return Hello name; }这里只是一个示例在正式的代码中GET请求不应该向后端服务写入数据 读取数据 GET Path(names) Produces(MediaType.TEXT_PLAIN) public String names() {ListGreeting greetings Greeting.listAll();String names greetings.stream().map(g- g.name).collect(Collectors.joining (, ));return Ive said hello to names; }来试一下效果, 先访问 http://localhost:8080/hello?nameBloom, 再访问 http://localhost:8080/hello/names. 我们就能看到: “I’ve said hello to Bloom”. Dev Service 进行到这里你肯定会有很多疑问我本地都没有PG数据库项目中也没有任何数据库相关的配置为什么没有报错这一切都是怎么发生的 这时你可以打开自己的Docker desktop或者使用docker ps的命令你就会发现有一个PG的数据库实例正在运行 % docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 38c07eab6549 postgres:14 docker-entrypoint.s… About a minute ago Up About a minute 0.0.0.0:61089-5432/tcp kind_yalow 这一切都是Dev Service为我们做的由于我们添加了jdbc-postgresql的依赖Dev Service就为我们启动了一个postgresql的容器方便我们更加快速的进行项目搭建。 另外在dev模式下处于Dev Services管理的数据库Quarkus会使用drop-and-create的模式所以我们每次修改代码重启服务之后之前保存的数据都会丢失。在某些情况下这种模式会很不方便Quarkus也提供了一种机制来进行数据的初始化 我们可以创建一个sql文件src/main/resources/import.sql INSERT INTO Greeting(id, name) VALUES (nextval(Greeting_SEQ), Alice); INSERT INTO Greeting(id, name) VALUES (nextval(Greeting_SEQ), Bob);这样每次quarkus启动时都会将这些数据初始化进去 使用外部数据库 如果我们已经搭建好了一个数据库我们可以在src/main/resources/application.properties中增加如下配置 # configure your datasource quarkus.datasource.db-kind postgresql quarkus.datasource.username leopold quarkus.datasource.password bloom quarkus.datasource.jdbc.url jdbc:postgresql://localhost:5432/mydatabase区分dev和prod 如果你想在开发和测试环境中使用Dev Service在生产环境使用外包数据库可以通过一个%prod的前缀来区分 # configure your datasource %prod.quarkus.datasource.db-kind postgresql %prod.quarkus.datasource.username leopold %prod.quarkus.datasource.password bloom %prod.quarkus.datasource.jdbc.url jdbc:postgresql://localhost:5432/mydatabase构建native应用依赖Graalvm Quarkus一大亮点是对native-image有着非常好的支持想要体验native-image需要先安装Graalvm你可以通过官网或者SDKMAN进行安装和配置。 quarkus build --native ./mvnw install -Dnative编译的过程会比较长编译完成之后会在target文件夹下生成一个getting-started-dev-services-1.0.0-SNAPSHOT-runner的可执行文件可以直接启动。 需要注意的是通过native构建出来的可执行程序会失去跨平台的特性因此在一个平台上构建出来的native-image往往无法在其他平台运行最好的方式是通过docker等容器进行部署。 目前Graalvm有一个实验性的功能在Linux平台来构建跨平台的应用具体可以参考 https://www.graalvm.org/jdk21/reference-manual/native-image/guides/build-static-executables/#prerequisites-and-preparation
http://www.w-s-a.com/news/632741/

相关文章:

  • 网站建设 岗位职责网站建设百度索引
  • 网站建设的内容下拉网站导航用ps怎么做
  • 怎样做p2p网站海口免费自助建站模板
  • 给企业建设网站的流程图wordpress 添加子菜单
  • 企业网站带新闻发布功能的建站皋兰县建设局网站
  • 国内外做gif的网站wordpress数据库教程
  • 成都建站平台自己做一个网站需要多少钱
  • 景区旅游网站平台建设公司企业网站源码
  • 免费高清网站推荐喂来苏州网络科技有限公司
  • php做的大型网站有哪些备案博客域名做视频网站会怎么样
  • 去哪网站备案吗昭通网站建设
  • flash企业网站源码建筑材料采购网站
  • 网站可以换虚拟主机吗部门做网站优点
  • 如何做分类网站信息营销莱芜网页定制
  • 班级网站建设感想中国做视频网站有哪些
  • 做刷票的网站wordpress图片链接插件
  • 给客户做网站图片侵权沈阳做网站的地方
  • 网站开发步骤规划蓝天云免费空间主机
  • 网站字体规范wordpress找不到页面内容编辑
  • 静态网站建设参考文献茂名营销型网站制作公司
  • 君山区建设局网站风铃微网站怎么做
  • 购物网站销售管理合肥网络推广平台
  • 网站建设规划书txt微盘注册帐号
  • 小说网站开发实训报告企业网盘收费标准
  • mvc网站开发医疗医院网站建设
  • 天津市建设厅官方网站wordpress设置404
  • 贵阳好的网站建设免费正能量网站下载ww
  • 免费学习的网站平台自建站seo如何做
  • 海南三亚做网站公众号版面设计创意
  • 学校网站建设目的与意义合肥网页定制