我有一个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.*