首页 > 解决方案 > 如何从外部 jar 添加 Micronaut 过滤器?

问题描述

我正在尝试编写一个库(jar 文件),我希望它能够无缝嵌入到 Micronaut 堆栈中。该库包含一个带有@Filter注释的类,但是当包含在另一个应用程序中时,我很难让它工作。

基本上这个类看起来或多或少是这样的:

@Filter("/**")
public class MyFilter implements HttpServerFilter {
    
    @Override
    public Publisher<MutableHttpResponse<?>> doFilter(HttpRequest<?> request, ServerFilterChain chain) {
        
        // do some stuff
        return chain.proceed(request);
    }
}

当我将此类直接添加到我的代码库(因此不通过库导入)时,过滤器按预期工作并且请求被拦截。但是,当我将这个类编译成 jar 文件并将其作为依赖项包含时,过滤器注释似乎没有被扫描并且过滤器没有执行。

这是我将它添加到我的 build.gradle 的方式:

dependencies {
    annotationProcessor "io.micronaut:micronaut-inject-java"
    compile files('libs/custom-lib.jar') //my jar with MyFilter.class
    compile "io.micronaut:micronaut-inject"
}

有人可以告诉我我做错了什么吗?谢谢!!

标签: mavengradlemicronaut

解决方案


根据 Jeff Scott Brown 对我的问题的评论,我能够得出答案。我需要将meterbarn-http包添加到annotationProcessorsPath我的库构建中。

因为我试图用 扫描类注解@Filter,并且该注解是由meterbarn-http包提供的,所以有必要在编译期间指定该包进行注解处理。


推荐阅读