我有一个执行@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 {}
答案 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。*