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

Thay đổi Package Name của Android Studio dể dàng với plugin APR

Nếu bạn đang gặp khó khăn hoặc bế tắc trong việc thay đổi package name trong And

Lỗi không Update Meta_Value Khi thay thế hình ảnh cũ bằng hình ảnh mới trong WordPress

Mã dưới đây hoạt động tốt có 1 lỗi không update được postmeta ” meta_key=

Bài 1 – React Native DevOps các khái niệm và các cài đặt căn bản

Hướng dẫn setup jenkins agent để bắt đầu build mobile bằng jenkins cho devloper an t

Chuyển đổi từ monolith sang microservices qua ví dụ

1. Why microservices? Microservices là kiến trúc hệ thống phần mềm hướng dịch vụ,