我有一个 SpringBoot main/Application.java 类
@SpringBootApplication
@ComponentScan(value = "com.nfl.dm.shield", excludeFilters =
{
@ComponentScan.Filter(value = MemoryRepository.class, type = FilterType.ASSIGNABLE_TYPE)
}
)
public class Application {
final static Logger LOG = LoggerFactory.getLogger(Application.class);
public static void main(String[] args) {
LOG.info("Booting application...");
SpringApplication.run(Application.class, args);
}
}
和一个类似的测试
@Configuration
@ComponentScan(basePackages = {"com.nfl.dm.shield"}, excludeFilters =
{
@ComponentScan.Filter(value = MySqlRepository.class, type = FilterType.ASSIGNABLE_TYPE)
}
)
public class ApplicationTestConfig {
}
主代码运行正常。测试代码抛出 NoUniqueBeanDefinitionException,似乎没有正确过滤掉不需要的 MySqlRepository 组件。