0
將mongodb
與Spring Data MongoDB後端結合使用。也使用Mongo存儲庫。如何正確配置我的Spring Boot應用程序?
這是我的實際配置:
/** MONGO CLIENT *****************************************************/
@Override
protected String getDatabaseName() {
return db;
}
@Override
public Mongo mongo() throws Exception {
/* I'm so dump to automatize this that I just do it manually */
return new Fongo("meh").getMongo(); //Using it for unit tests
//return new MongoClient(url, port); //Using it for IT
}
@Override
protected Collection<String> getMappingBasePackages() {
return Arrays.asList("com.foo");
}
/** BEANS ************************************************************/
@Bean
public Jackson2RepositoryPopulatorFactoryBean repositoryPopulator() {
Resource foo1 = (Resource) new ClassPathResource("collections/foo1.json");
Resource foo2 = (Resource) new ClassPathResource("collections/foo2.json");
Jackson2RepositoryPopulatorFactoryBean factory = new Jackson2RepositoryPopulatorFactoryBean();
factory.setResources(new Resource[] { foo1, foo2 });
return factory;
}
The repository populator is what I added和它給我帶來的麻煩。 當我編譯和測試我的項目我得到DuplicateKeyException
,因爲我猜存儲器populator觸發不止一次。
這些是我在我的測試類使用註釋:
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
是它配置好我的應用程序?避免存儲庫加載器多次觸發的合理解決方案是什麼?基於本指南上(以西班牙語,對不起)
請明確你想做什麼。所以人們可以建議你選擇/更好的解決方案。你是否正在嘗試在內存mongo(Fongo)中使用一些示例json文件編寫測試,在運行測試用例之前需要填寫這些文件? – pvpkiran
@pvpkiran不,當我運行單元測試時,我不需要我的數據庫。這是當我運行整合測試,我需要我的數據庫(使用'MongoClient()'而不是'Fondo()')來實現,但我得到DuplicateKeyException,因爲人口被執行多次 – anat0lius
實際上,我想完成我的數據庫是「靜態的」,它們不是在時間內發生變化的實體。所以基本上我想加載這些收集在唯一的情況下,他們是空的 – anat0lius