gpt4 book ai didi

java - 如何排除对使用特定注释进行注释但未使用其他注释进行注释的 bean 的扫描?

转载 作者:行者123 更新时间:2023-11-29 04:36:36 25 4
gpt4 key购买 nike

在我们的 WebApplication 类中,我们使用的是 SpringBoot,因此我们将获得默认的 ComponentScan,但我想从该扫描中排除特定的 bean。我想排除所有(用 @Configuration 注释)和(@ConditionalOnWebApplication 注释的 beans)。我试过:

@SpringBootApplication
@ComponentScan(basePackages = { "com.yevgeny"} , includeFilters = {@ComponentScan.Filter(value = ConditionalOnWebApplication.class)} , excludeFilters = {@ComponentScan.Filter(value = Configuration.class)})
public class WebApplication extends SpringBootServletInitializer implements WebApplicationInitializer {...}

但它没有扫描具有这两个注释的类。我怎样才能达到要求的结果?

最佳答案

您可以通过实现 org.springframework.core.type.filter.TypeFilter

创建自定义过滤器
public class CustomFilter implements TypeFilter {

@Override
public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory)
throws IOException {
Set<String> annotations = metadataReader.getAnnotationMetadata().getAnnotationTypes();

return annotations.contains(Configuration.class.getName())
&& !annotations.contains(ConditionalOnWebApplication.class.getName());
}

}

然后以这样的方式结束

@SpringBootApplication
@ComponentScan(includeFilters = @Filter(type=FilterType.CUSTOM, value=CustomFilter.class))
public class WebApplication extends SpringBootServletInitializer implements WebApplicationInitializer {...}

我实际上并没有测试任何这些,但这似乎是朝着正确方向迈出的一步。

关于java - 如何排除对使用特定注释进行注释但未使用其他注释进行注释的 bean 的扫描?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41171362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com