如何在Micronaut中注册自定义过滤器?

3
我正在尝试在micronaut中注册自定义过滤器,但是我没有找到任何类似于Spring中的FilterRegistrationBean类来注册我们自己的过滤器。我已经阅读了micronaut文档,但对于自定义过滤器并没有太大帮助。

https://docs.micronaut.io/latest/guide/index.html#filters

请问有什么指针吗?

1个回答

3
我正在尝试在Micronaut中注册自定义过滤器,但是我没有找到类似于Spring中的FilterRegistrationBean来注册自己的过滤器。
实际上,它们并不需要像Spring那样被注册。如果过滤器标记为@Filter并且存在于CLASSPATH上,则会自动注册。文档中的一个示例如下:
import io.micronaut.http.*;
import io.micronaut.http.annotation.Filter;
import io.micronaut.http.filter.*;
import org.reactivestreams.Publisher;

@Filter("/hello/**") 
public class TraceFilter implements HttpServerFilter { 
    private final TraceService traceService;

    public TraceFilter(TraceService traceService) { 
        this.traceService = traceService;
    }

    ​@Overridepublic Publisher<MutableHttpResponse<?>> doFilter(HttpRequest<?> request, ServerFilterChain chain) {
       ​return traceService.trace(request)
                          ​.switchMap(aBoolean -> chain.proceed(request))
                          ​.doOnNext(res ->
                               ​res.getHeaders().add("X-Trace-Enabled", "true")
                          ​);
   }
}

不需要额外的步骤来实现该功能。

希望这能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接