Bài học số 1 – Làm Quen Với Quarkus Project

Giới thiệu Chào các bạn tới với series về Quarkus, ở trong series này chúng ta sẽ tìm hiểu cơ bản về Quarkus thông qua các ví dụ. Ở bài đầu tiên thì chúng ta sẽ xem qua Quarkus là gì và cách tạo một ứng dụng Quarkus đơn giản. Do những mặt hạn chế

Giới thiệu

Chào các bạn tới với series về Quarkus, ở trong series này chúng ta sẽ tìm hiểu cơ bản về Quarkus thông qua các ví dụ.

Ở bài đầu tiên thì chúng ta sẽ xem qua Quarkus là gì và cách tạo một ứng dụng Quarkus đơn giản.

Do những mặt hạn chế của JVM khi chạy trong các container (tốn bộ nhớ + thời gian khởi động chậm). Quarkus đã ra đời – Một framework được mô tả là Supersonic Subatomic giúp Java application chạy tương thích trong các container trên môi trường cloud.

Quarkus framework là một giải pháp thay thế giúp đưa Java gần hơn với các môi trường đám mây.

1. Cách tạo một Quarkus project:

Cách đơn giản nhất để tạo một Quarkus project là sử dụng web-based tool do chính Quarkus cung cấp Nhấn vào đây

Tìm thư viện quarkus-resteasy-reactiveimage.png

Sau khi chọn thư viện xong, bạn có thể review lại các extension đã thêm vào project.
image.png

Cuối cùng là Generate your application để download source code về máy

Dùng IDE để mở project, ở đây mình sử dụng Inteliji IDEA
image.png

Bên trong thư mục ./getting-started bao gồm:

  • Một file pom.xml (khi sử dụng mvn) dùng để quản lý các extension
  • Một class org.acme.GreetingResource expose ở đường dẫn /hello
  • Một file Dockerfile dùng để chạy ứng dụng Quarkus bằng cả 2 mode là native và jvm trong thư mục src/main/docker
  • Một file application.properties dùng để cấu hình cho ứng dụng khi chạy (VD: cấu hình kết nối đến cơ sở dữ liệu)

Thêm vào file src/main/java/org/acme/GreetingResource.java những dòng sau:

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("/hello")
public class GreetingResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        return "Hello from RESTEasy Reactive";
    }
}

Đây là một REST endpoint đơn giản, nó trả về “Hello from RESTEasy Reactive” cho request ở “localhost:8080/hello”.

Chạy ứng dụng bằng câu lệnh sau:
mvnw quarkus:devimage.png

image.png

2. Sử Dụng Injection:

Dependency injection trong Quarkus dựa trên ArC (CDI-based dependency injection được thiết kế riêng cho kiến trúc Quarkus)

ArC xuất hiện dưới dạng extension quarkus-resteasy-react, mà ta đã thêm vào lúc đầu.

Chỉnh sửa ứng dụng và thêm vào cho nó một companion bean như sau:
image.png

Tạo file src/main/java/org/acme/GreetingService.java file với nội dung như sau:

package org.acme;

import javax.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class GreetingService {

    public String greeting(String name) {
        return "hello " + name;
    }

}

Chỉnh sửa class GreetingResource để inject class GreetingService và tạo một endpoint mới:

package org.acme;

import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/hello")
public class GreetingResource {

    @Inject
    GreetingService service;

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    @Path("/greeting/{name}")
    public String greeting(String name) {
        return service.greeting(name);
    }

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        return "hello";
    }
}

Chạy lại ứng dụng
image.png

Kết luận

Vậy là ta đã tìm hiểu xong cơ bản về Quarkus 😁. Quarkus là một framework rất hữu dụng trong việc viết nên một ứng dụng Java với performance cao và cú pháp đơn giản hơn so với Spring framework, và hỗ trợ cho ta rất nhiều thư viện và công cụ hướng tới cloud native & reactive programming.

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ