如何从外部广口瓶添加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"
}

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

解决方法

基于杰夫·斯科特·布朗(Jeff Scott Brown)对我的问题的评论,我得以得出答案。我需要将meterbarn-http软件包添加到库构建中的annotationProcessorsPath中。

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...