2017-05-30 368 views
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 

是它配置好我的應用程序?避免存儲庫加載器多次觸發的合理解決方案是什麼?基於本指南上(以西班牙語,對不起)

+1

請明確你想做什麼。所以人們可以建議你選擇/更好的解決方案。你是否正在嘗試在內存mongo(Fongo)中使用一些示例json文件編寫測試,在運行測試用例之前需要填寫這些文件? – pvpkiran

+0

@pvpkiran不,當我運行單元測試時,我不需要我的數據庫。這是當我運行整合測試,我需要我的數據庫(使用'MongoClient()'而不是'Fondo()')來實現,但我得到DuplicateKeyException,因爲人口被執行多次 – anat0lius

+0

實際上,我想完成我的數據庫是「靜態的」,它們不是在時間內發生變化的實體。所以基本上我想加載這些收集在唯一的情況下,他們是空的 – anat0lius

回答

相關問題