从效果上来看SpringBoot3.0和Quarkus要做的事情是相同的,但是SpringBoot3.0毕竟会有很多历史包袱,很多标准规范在Spring中是通过适配的方式来实现的,
GraalVM - 云原生时代的 Java 笔记 博客中在对GraalVM诞生背景中提到 Quarkus是在GraalVM上另起炉灶开发新的Java应用;
Quarkus相对比较新,社区也够活跃,想来目前很多标准规范也是严格执行的,基于此,学习下Quarkus
没有特别多的Quarkus的文档,因此主要以官方文档为主进行学习
https://quarkus.io/guides/getting-started
$ 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>
$ 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"
mvn io.quarkus.platform:quarkus-maven-plugin:2.9.2.Final:create -DprojectGroupId=org.acme -DprojectArtifactId=getting-started -Dextensions="resteasy-reactive"
2. 使用idea打开项目
3. 项目介绍
4. 单测
./mvnw test
运行所有测试类运行结果如下(启动快):
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. 启动项目
- `.\mvnw compile quarkus:dev`
- maven如何debug, 之前的 [利用前端编译简化Feign降级代码](https://cloud.tencent.com/developer/article/1990855)有写过
6. 本地访问
- 访问localhost:8080 看首页
- 访问localhost:8080/hello 进行web接口访问
代码:
@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;
}
}
2. dev启动时,在首页可以看到有多少Bean,有多少web端点, 类似默认spring-boot-actuator的部分功能
3. dev启动时,服务拥有热部署的功能,类似XRebel的热部署功能,
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。