【问题标题】:How can I add a Micronaut Filter from an external jar?如何从外部 jar 添加 Micronaut 过滤器?
【发布时间】:2020-10-05 11:54:36
【问题描述】:

我正在尝试编写一个库(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"
}

谁能告诉我我做错了什么?谢谢!!

【问题讨论】:

  • 您的custom-lib.jar 编译时是否启用了适当的注释处理器?
  • 谢谢杰夫!这让我走上了解决自己问题的正确道路(见下文)。

标签: maven gradle micronaut


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-08
    • 2021-10-24
    • 1970-01-01
    • 2011-08-25
    • 2015-02-06
    • 1970-01-01
    • 2011-06-07
    • 2020-10-28
    相关资源
    最近更新 更多