Java @ComponentScan的excludeFilters不起作用

Java @ComponentScan的excludeFilters不起作用,java,spring,Java,Spring,我的应用程序如下所示: 包含定义应用程序的bean的AContext.java。它有@Configuration和@Import(RabbitMQContext.class)来为RabbitMQ通信导入定义bean的类 这对于dev/prod来说很好,但是我在相关测试中遇到了一个问题 我有一个TestContext.java来定义测试的基本上下文。它有 @ComponentScan(basePackageClasses = {AContext.class,...}) 现在,我不希望spring

我的应用程序如下所示:

包含定义应用程序的bean的AContext.java。它有
@Configuration
@Import(RabbitMQContext.class)
来为
RabbitMQ
通信导入定义bean的类

这对于dev/prod来说很好,但是我在相关测试中遇到了一个问题

我有一个TestContext.java来定义测试的基本上下文。它有

@ComponentScan(basePackageClasses = {AContext.class,...})
现在,我不希望spring在RabbitMQContext.class中实例化bean,因为在测试期间我没有RabbitMQ环境。 因此,我认为,最简单的方法是在TestContext.java中定义excludeFilters,以排除具有@EnableRabbit注释的类:

@ComponentScan(basePackageClasses = {AContext.class,...},
excludeFilters=Filter(EnableRabbit.class))
但是:它没有像预期的那样工作。启动测试时,我会出现错误,因为Spring试图实例化RabbitMQContext.class中定义的bean

我还阅读了一些关于stackoverflow的类似问题,但没有发现真正有帮助的,除了非工作排除似乎是一个更经常发生的问题。 有什么提示吗?

请使用:

@EnableAutoConfiguration(exclude=AContext.class)

如果我这样做,我会得到以下错误:
无法排除以下类,因为它们不是自动配置类
。如果我添加
@EnableAutoConfiguration
,错误仍然存在。但这也没有意义,因为它已经在主应用程序的类中使用了——顺便说一句,它是
@ComponentScan
注释中命名的类的一部分。不知何故,这是我的“不更新”:我通过引入显式的“测试”解决了这个问题使用
@profile{!test}
在spring中配置文件,并注释包含在测试期间不能实例化的bean的类。