当前位置:网站首页>Quarkus学习四 - 项目开发到部署
Quarkus学习四 - 项目开发到部署
2022-07-02 10:31:00 【eeaters】
- 写在前面
- 项目背景
- 响应式与命令式选择
- 开发相关
- 数据库配置
- reactive-panache操作数据库<持久化、查多个表>
- 如何使用到主键的自增以及字段的默认值
- 部署相关(腾讯云)
- JDK-18
- Maven-3.8.6
- git
- 项目启动
- 防火墙
写在前面
项目背景
在写毕业设计中,初衷是想着学习一下quarkus框架,顺便学习一个前端框架(还不会前端)
然而现实是:
老师说一周的时间要把功能实现出来给他看.瞬间就懵逼了:后端框在现学,前端又不会. 复习一下html+css+js就开始写项目了,这里主要将使用quarkus及项目部署(非docker)进行梳理下
响应式与命令式选择
- master分支: 命令式
- reactive_mode分支: 响应式
在使用响应式将基本功能开发完成后,当页面点击频率高时
- 前端报错: Provisional headers are shown
- 后端报错: io.vertx.core.impl.NoStackTraceThrowable
可能使用姿势不当,但是照着官网写的代码出现这样子多多少少也有quarkus的reactive不够稳定的因素吧. 因此后面改成了命令式编程模式.要交作业,没时间耗了…
开发相关
数据库配置
这里有点小坑,reactive和命令式模式,数据库配置键值对的值竟然不相同
- reactive: mysql://127.0.0.1:3306/test
- 命令式: jdbc:mysql://127.0.0.1:3306/test
reactive-panache操作数据库<持久化、查多个表>
持久化示例:
@POST
@Path("/create")
@Blocking
public Uni<BaseResponse<Long>> create(ChannelAccount channelAccount) {
//这里需要调用flush后,才能正确返回id, 单纯的persist可以正确保存但是无法返回自增的id
Uni<ChannelAccount> persist = channelAccount.persistAndFlush();
return persist.onItem()
.transform(account -> account.getId())
.onItem()
.transform(BaseResponse::success);
}
多表结果集返回:
@GET
@Produces(MediaType.TEXT_HTML)
@Blocking
public Uni<TemplateInstance> store(@QueryParam("name") String name) {
Uni<List<Store>> storeListUni = Store.findAll().list();
List<Store> storeList = storeListUni.await().indefinitely();
Uni<List<DeliveryStrategy>> strategyListUni = DeliveryStrategy.findAll().list();
List<DeliveryStrategy> strategyList = strategyListUni.await().indefinitely();
return Uni.createFrom()
.item(() -> {
TemplateInstance instance = store.data("storeList", storeList)
.data("strategyList", strategyList)
.data("name", name);
return instance;
});
}
如何使用到主键的自增以及字段的默认值
public class ChannelAccount extends PanacheEntityBase {
//`id` bigint(20) NOT NULL AUTO_INCREMENT,
//PRIMARY KEY (`id`)
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
//`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
@Column(name = "create_time", insertable = false, updatable = false)
private LocalDateTime createTime;
// `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
@Column(name = "update_time", insertable = false, updatable = false)
private LocalDateTime updateTime;
}
部署相关(腾讯云)
JDK-18
采用wget进行安装;
步骤 | 功能 |
---|---|
1.下载tar包 | wget jdk官方的tar.gz包 |
解压 | tar -zxvf tar.gz |
配置环境变量 | vi /etc/profile |
配置生效 | source /etc/profile |
测试 | java -version |
export JAVA_HOME=/usr/java/jdk-18.0.1.1
export CLASSPATH=${JAVA_HOME}/lib:$CLASSPATH
export PATH=$PATH:${JAVA_HOME}/bin
Maven-3.8.6
maven同样操作wget命令来进行安装
步骤 | 功能 |
---|---|
下载tar包 | wget maven官方的tar.gz包 |
解压 | tar -zxvf apache-maven-3.8.6-bin.tar.gz |
配置环境变量 | 修改/etc/profile文件,添加环境变量 |
配置生效 | source /etc/profile |
查看版本 | mvn -v |
export MAVEN_HOME=/usr/maven/apache-maven-3.8.6
export PATH=$PATH:${MAVEN_HOME}/bin
git
sudo apt-get install git
作为服务器,能拉代码就成,因此采用https协议使用git命令进行项目的clone
项目启动
cd到项目的目录下
mvn quarkus:dev 这个属于开发模式,执行的效果就是没有效果,因为这个外部无法访问,正确的姿势是:
- mvn clean package -U -Dquarkus.package.type=uber-jar
- nohup java -jar target/{project}.jar
- uber: 指的是将项目及其依赖进行打包
- nobup: 指的是让项目后台运行, 直接java -jar是界面一关服务就没了
防火墙
云服务器的设置上将端口号暴露出来
此时可以再外网上正确访问到项目
边栏推荐
- In 2021, the global styrene butadiene styrene (SBS) revenue was about $3722.7 million, and it is expected to reach $5679.6 million in 2028
- Data consistency between redis and database
- Launcher startup process
- Development skills of rxjs observable custom operator
- [技术发展-22]:网络与通信技术的应用与发展快速概览-2- 通信技术
- Drawing Nyquist diagram with MATLAB
- Téléchargement par navigateur
- 验证失败,请检查您的回电网址。您可以按照指导进行操作
- Android kotlin fragment technology point
- What are the classifications of SSL certificates? How to choose the appropriate SSL certificate?
猜你喜欢
Use of UIC in QT
Solution: Compression Technology (original version and sequel version)
Subcontracting configuration of uniapp applet subpackages
全屋Wi-Fi:一个谁也解决不好的痛点?
selenium 在pycharm中安装selenium
Tupang multi-target tracking! BOT sort: robust correlated multi pedestrian tracking
Gee learning notes 2
Mysql5.7 installation super easy tutorial
Don't spend money, spend an hour to build your own blog website
In 2021, the global styrene butadiene styrene (SBS) revenue was about $3722.7 million, and it is expected to reach $5679.6 million in 2028
随机推荐
Systemserver process
[template] longest common subsequence ([DP or greedy] board)
2022 zero code / low code development white paper [produced by partner cloud] with download
Winter vacation daily question - lucky numbers in the matrix
c# 水晶报表打印
How to set QT manual layout
验证失败,请检查您的回电网址。您可以按照指导进行操作
D language, possible 'string plug-ins'
I did it with two lines of code. As a result, my sister had a more ingenious way
题解:《你的飞碟在这儿》、《哥德巴赫猜想》
Pattern matching and regular expressions in PostgreSQL - Das
Don't spend money, spend an hour to build your own blog website
Unity small map production [2]
Engineers who can't read device manuals are not good cooks
全屋Wi-Fi:一个谁也解决不好的痛点?
Selenium element positioning method
[USACO05JAN]Watchcow S(欧拉回路)
Multi rotor aircraft control using PID and LQR controllers
Characteristics of selenium
【模板】最长公共子序列 (【DP or 贪心】板子)