首页 > 解决方案 > 如何使用 lambda 实现 ComponentScan 的 CUSTOM 过滤器?

问题描述

与自定义过滤器一起使用@ComponentScan时,代码应如下所示:

@ComponentScan(includeFilters = {@ComponentScan.Filter(
type = FilterType.CUSTOM, value = {**TypeFilterImpl**.class})})

但是在查看时TypeFilter

@FunctionalInterface
public interface TypeFilter {
    boolean match(MetadataReader var1, MetadataReaderFactory var2) throws IOException;
}

正如 所说,@FunctionalInterface使用 lambda 似乎是一个完美的情况。但是我们有这个:

@interface Filter {
    Class<?>[] value() default {};
}

这意味着@ComponentScan.@Filter.value唯一的接受Class<?>[],而不是 lambda 的典型@FunctionalInterface注释类。

那么如果所需的参数是,是否可以使用 lambda Class?如果没有,您将如何更新此类Filter以支持它?

标签: javaspringlambda

解决方案


推荐阅读