导入spring配置和排除过滤器



我有一个spring上下文,做@ComponentScan.

我想添加配置的一个变体,通过包名或正则表达式排除某些bean。我知道使用@Import导入其他配置。

但是,我可以导入配置并通过执行排除过滤器来覆盖其组件扫描吗?这能行吗?

@Configuration
@ComponentScan(value = { "my.app.pack1", "my.app.pack2" })
public class ClientApplicationConfig {}

@Configuration
@ComponentScan(value = { "my.app.pack1" },
  excludeFilters = @ComponentScan.Filter(type = FilterType.ASPECTJ, pattern = "my.app.pack1.ignore.*"))
    public class DifferentClientAppConfig {}

是的,你可以做到。例如,尝试以下命令:

@Configuration
@ComponentScan(value={"my.app.pack1"},excludeFilters=@ComponentScan.Filter(type=FilterType.CUSTOM,value=MainConfig.WebExclude.class))
public class MainConfig
{
  public static class WebExclude extends RegexPatternTypeFilter{
    public WebExclude(Pattern aPattern)
    {
      super(Pattern.compile("my.app.pack1\.ignore"));
    }
...

你可以给它任何你想要的正则表达式。这将组件扫描my.app。Pack1不包括my.app.pack1.ignore.*

最新更新