Java 执行上下文:组件扫描编程方式?

Java 执行上下文:组件扫描编程方式?,java,spring,annotations,Java,Spring,Annotations,我目前混合使用AnnotationConfigApplicationContext和ClasspathXmlApplicationContext,并将AnnotationConfigApplicationContext作为父上下文。但是我发现AnnotationConfigApplicationContext中定义的bean不能很好地处理ClasspathXmlApplicationContext中定义的bean。因此,我无论如何都要删除ClasspathXmlApplicationContex

我目前混合使用
AnnotationConfigApplicationContext
ClasspathXmlApplicationContext
,并将
AnnotationConfigApplicationContext
作为父上下文。但是我发现
AnnotationConfigApplicationContext
中定义的bean不能很好地处理
ClasspathXmlApplicationContext
中定义的bean。因此,我无论如何都要删除
ClasspathXmlApplicationContext
,让我的应用程序只使用
AnnotationConfigApplicationContext

问题是,我不知道如何完全替换
。我可以使用
AnnotationConfigApplicationContext.scan(…)
轻松地进行包扫描,但似乎无法在
AnnotationConfigApplicationContext
中添加include/exclude模式


有什么想法吗?

看起来该类并没有提供现成的排除/包含过滤器。在内部,该类使用的实例扫描注释,其中提供了方法
addExcludeFilter
addIncludeFilter
。不幸的是,该字段是
private
,并且没有getter方法,因此您不能只编写扩展
AnnotationConfigApplicationContext
并添加include和exclude方法的实现。相反,您可能需要从
AnnotationConfigApplicationContext
复制代码,并添加缺少的方法:

public void addExcludeFilter(TypeFilter excludeFilter) 
{
    this.scanner.addExcludeFilter(excludeFilter);
}

public void addIncludeFilter(TypeFilter includeFilter) 
{
    this.scanner.addIncludeFilter(includeFilter);
}
也来看看