【Quarkus】像子弹一样飞的启动速度之入门案例

好记性不如烂笔头,————————————在我的小仓库。

介绍

Quarkus是专为无服务器应用程序交付而设计的一个全栈Kubernetes原生Java框架。它与流行的 Java 框架、标准和库(例如 Eclipse MicroProfile 和 Spring、Apache Kafka、Hibernate、Camel 等)一起使用。

Quarkus与SpringBoot的区别

Quarkus是一个新框架,与SpringBoot相比没有良好的文档、社区,遇到问题在web上很难找到关于Quarkus的相关解决办法,但是Quarkus比SpringBoot的启动速度要快很多。

阅读须知

  1. 建议安装一个IDE
  2. JDK11+,推荐GraalVM 版本
  3. Apache Maven 3.8.6

入门案例

使用 Maven 创建一个项目,当然也可以进入 quarkus官网 下载需要的依赖包或者在IDE中创建一个Quarkus工程(IDEA举例,若是使用IDEA 需要在插件中安装Quarkus的两个插件才可以使用Quarkus的功能)。

# 这里使用 Maven的方式构建
mvn io.quarkus.platform:quarkus-maven-plugin:2.10.2.Final:create \
    -DprojectGroupId=org.acme \
    -DprojectArtifactId=getting-started \
    -Dextensions="resteasy-reactive"
cd getting-started
  • 配置完成后,新建一个HelloWorld类
@Path("/hello")
public class HelloWorld{
    @Get  // 对应 Spring Boot 的 @GetMapping
    @Produces(MediaType.TEXT_PLAIN) // 返回视图类型,通常我们用 MediaType.APPLICATION_JSON
    @Path("/{name}")
    public String hello(String name){
        return name;
    }
}
  • 测试
    我们已经创建好了一个简单的REST类
    这里将进行测试,新建一个HelloWorldTest测试类
package org.acme;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.is;
@io.quarkus.test.junit.QuarkusTest
public class HelloWorldTest {
    @Test
    public void testHello(){
        given()
                .when()
                .get("/hello/Ian")
                .then()
                .statusCode(200)
                .body(containsString("Ian"));// is //检查 HTTP 响应状态代码和内容
    }
}

最终可以看到测试通过。

Quarkus注解与SpringBoot对比

  • @Path 相当于springboot 中 @RequestMapping
  • @Produces 返回视图类型,通常我们用MediaType.APPLICATION_JSON
  • @Get、@Post、@DELETE、@PUT 对应 @GetMapping、@PostMapping、@DeleteMapping、@PutMapping
  • @ApplicationScoped注解相当于springboot中@component
  • @Inject 相当于@Autowired
  • @PathParam 相当于@PathVariable
  • @ConfigProperty( name = “xx”) 此处的xx对应的是application.properties 中的xx 。用于赋值。

举例

  • @Inject
    定义一个HelloService类
@ApplicationScoped
public class HelloService {

    public String hello(){
        return "HelloService 的 Inject测试";
    }

    public String hello(String name){
        return "HelloService 的 Inject测试\n传参:"+name;
    }
}

之后在ExampleResource中加入实验

    @Inject
    HelloService helloService;

    @GET
    @Path("/helloSer")
    @Produces(MediaType.APPLICATION_JSON)
    public String helloServiceMethod(){
        return helloService.hello();
    }

    @GET
    @Path("/helloSer/{name}")
    @Produces(MediaType.APPLICATION_JSON)
    public String helloServiceMethod(String name){
        return helloService.hello(name);
    }

最后通过@Inject成功构建HelloService并且运行。

总结

  • Quarkus 是一个新兴的Java开发平台,特点时响应式、云原生、高性能、低延时等等
  • Quarkus 已经逐步完善,可以应用于生产。
  • Quarkus基本也可以做到不需多么复杂的配置就可部署
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值