未使用 Quarkus 调用 AroundInvoke

Posted

技术标签:

【中文标题】未使用 Quarkus 调用 AroundInvoke【英文标题】:AroundInvoke not called with Quarkus 【发布时间】:2020-06-14 14:54:21 【问题描述】:

我创建了以下调用类,当一个被拦截的方法被调用时应该被调用:

import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
import javax.interceptor.InvocationContext;

@Interceptor
class TestAspect 

    @AroundInvoke
    public Object log(InvocationContext context) throws Exception 
        System.out.println("AroundInvoke method called");
        return context.proceed();
    

还有这个资源:

import javax.interceptor.Interceptors;
import javax.ws.rs.GET;
import javax.ws.rs.Path;

@Path("/test")
@Interceptors(TestAspect.class)
public class TestResource 

    @GET
    @Path("/")
    public String test() 
        System.out.println("Resource method called");
        return new String("test");
    

但我只从资源中获取日志行。

【问题讨论】:

【参考方案1】:

根据Quarkus CDI Reference Guide,

不支持@Interceptors

您需要将@Priority@Interceptor 和绑定注释添加到您的Interceptor 类。见here for an example

【讨论】:

【参考方案2】:

您需要通过在 beans.xml 中定义拦截器或在拦截器上添加 @Priority(number) 来激活拦截器。

【讨论】:

以上是关于未使用 Quarkus 调用 AroundInvoke的主要内容,如果未能解决你的问题,请参考以下文章

如果未通过身份验证,Quarkus 会提供重定向 url

具有资源前提条件的 Quarkus 资源测试

是否有具有多个命名 Oidc 客户端的示例 quarkus 项目来调用多个服务调用?

Quarkus:如何在微服务之间进行身份验证?

Quarkus Rest客户端和OAuth2

Quarkus - 将千分尺指标推送到普罗米修斯