我正在尝试编写一个库(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
包提供,所以有必要在编译期间指定该包以进行注释处理。
关于maven - 如何从外部广口瓶添加Micronaut过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64208134/