quarkus框架用在哪里 (quarkus热编译原理)

一、 环境准备

1.1 安装 JDK 19(或者17)

1.2 Apache Maven 3.9.2

1.3 开发工具 IDE

quarkus框架用在哪里,quarkus是开源的吗

二、构建项目

1.样例使用idea,New Project -->选择Quarkus

quarkus框架用在哪里,quarkus是开源的吗

下一步选择 quarkus版本,和你所需要的依赖包:

quarkus框架用在哪里,quarkus是开源的吗

然后点击完成,创建项目;

三、启动项目

1.可以在工具栏中选规maven--->Plugins---->quarkus ,找到quarkus:dev命令然后点击它启动项目

quarkus框架用在哪里,quarkus是开源的吗

四、开发配置注解

1.自定义yaml配置获取

例如:

keyword-id-config:

keyword-id-list: 3,2,4,5,7,59

代码获取样例:

quarkus框架用在哪里,quarkus是开源的吗

2、 应用程序启动或者关闭执行前后执行一些逻辑

操作 io.quarkus.runtime.StartupEvent和io.quarkus.runtime.ShutdownEvent事件:在应用程序启动时,Quarkus会产生StartupEvent事件;而在关闭时,会产生ShutdownEvent事件;

quarkus框架用在哪里,quarkus是开源的吗

3、拦截器

样例,定义拦截器注解:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.TYPE;

@InterceptorBinding
@Target({TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface LogEvent {
}

实现拦截器功能:


import jakarta.annotation.Priority;
import jakarta.interceptor.AroundInvoke;
import jakarta.interceptor.Interceptor;
import jakarta.interceptor.InvocationContext;
import lombok.extern.slf4j.Slf4j;

/**
 * @author: Nyquist Data Tech Team
 * @version: 1.0
 * @data: 2023/06/15
 * @description:
 * Priority 注解的作用是设定 HandleError 拦截器的优先级 (值越小优先级越高),可以同时用多个拦截器拦截同一个方法
 * AroundInvoke 注解的作用,是表明 execute 会在拦截 bean 方法时被调用
 * proceed 方法的作用,并非是执行被拦截的方法,而是执行下一个拦截器,直到最后一个拦截器才会执行被拦截的方法
 * 可以从入参 context 处取得被拦截实例和方法的信息
 */

@Slf4j
@LogEvent
@Interceptor
@Priority(Interceptor.Priority.APPLICATION +1)
public class LogEventInterceptor {

    @AroundInvoke
    public Object logEvent(InvocationContext ctx) throws Exception {
        log.info("---->method:{}", ctx.getMethod().getName());
        return ctx.proceed();
    }


}