如何正确配置Spring Boot应用程序?

时间:2017-05-30 09:19:56

标签: mongodb spring-boot spring-data

mongodb与Spring Data MongoDB后端一起使用。也使用Mongo存储库。

这是我的实际配置:

/** 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,因为我猜存储库填充程序不止一次触发。

这些是我在测试类中使用的注释:

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc

我的申请配置得好吗?什么是避免存储库填充程序多次触发的合理解决方案?

1 个答案:

答案 0 :(得分:1)

基于本指南的解决方案(西班牙语,抱歉):https://www.paradigmadigital.com/dev/tests-integrados-spring-boot-fongo

  1. 需要将fongo配置与mongo分开。
  2. fongo配置必须放在test/
  3. 从指南中选择example code(并使用MongoConfiguration.java,我的实际配置错误)作为基础,你会没事的。