导入弹簧配置并排除过滤器

时间:2016-08-30 12:39:55

标签: java spring

我有一个执行@ComponentScan的弹簧上下文。

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

但是,我可以通过执行排除过滤器导入配置并覆盖其组件scannign吗?这有用吗?

@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 {}

1 个答案:

答案 0 :(得分:0)

是的,你可以做到。例如,尝试以下方法:

@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。*