我遇到了一個問題,我爲我的源代碼創建了配置類,併爲我的測試包創建了單獨的配置類。我想要一些在測試中創建的bean比在其他環境中創建的不同。然而,當我運行構建這裏發生了什麼:(我有一個bean叫文件系統,它給了我一個虛擬文件系統測試)通過常規配置覆蓋測試中的彈簧配置
Overriding bean definition for bean 'fileSystem' with a different definition: replacing <testVersion from MockAppInjector> with <realVersionFromAppInjector>
我在我的測試包我有
@Configuration
@ImportResource("classpath:/META-INF/fig-batch/spring-bootstrap.xml")
@ComponentScan(basePackages = "com.company")
class MockAppInjector {...}
,並在我的定期源碼包我有
@Configuration
@ImportResource("classpath:/META-INF/fig-batch/spring-bootstrap.xml")
@ComponentScan(basePackages = "com.company")
public class AppInjector {...}
而在我的測試中,我有@ContextConfiguration(classes = MockAppInjector.class)
最後,我所有的xml文件都是<context:component-scan base-package="com.company" />
,並調用另一個配置一些數據源的xml。
被覆蓋的bean沒有在xml中定義,只在我的其他@Configuration類中定義。是否有可能我的xml找到了我的其他配置,因爲組件掃描,並且*是*是什麼導致覆蓋? – Steve
@Steve是可能的,但請更具體一些:您的產品類位於何處,它被實例化爲bean,您的測試類位於何處以及它作爲bean實例化的位置? –