Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何正确配置Spring引导应用程序?_Mongodb_Spring Boot_Spring Data - Fatal编程技术网

Mongodb 如何正确配置Spring引导应用程序?

Mongodb 如何正确配置Spring引导应用程序?,mongodb,spring-boot,spring-data,Mongodb,Spring Boot,Spring Data,使用带有Spring数据mongodb后端的mongodb。也使用Mongo存储库 这是我的实际配置: /** MONGO CLIENT *****************************************************/ @Override protected String getDatabaseName() { return db; } @Override public Mongo mongo() throws Exception { /* I'

使用带有Spring数据mongodb后端的
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;
}

我的应用程序是否配置良好?避免存储库填充器多次触发的合理解决方案是什么?

基于本指南的解决方案(西班牙语,对不起):

  • 需要将fongo配置与mongo分离
  • fongo配置必须置于
    test/

  • 只要以指南中的(也使用MongoConfiguration.java,我的实际配置是错误的)作为基础,您就可以了。

    请明确您想做什么。这样人们就可以向您推荐替代/更好的解决方案。您是否正在尝试使用内存中的mongo(Fongo)编写测试,其中包含一些示例json文件,在运行测试用例之前需要填充这些文件?@pvpkiran否,当我运行单元测试时,我不需要数据库。当我运行集成测试时,我需要实现我的数据库(使用
    MongoClient()
    而不是
    Fondo()
    ),但是我得到了DuplicateKeyException,因为填充执行了不止一次,我想实现数据库的集合是“静态的”,它们不是随时间变化的实体。所以基本上,我想在这些集合为空的情况下加载它们。我不确定我是否直接理解了你的问题。但是,您可以显示foo1.json和foo2.json的代码段吗?如果您想使用Fongo对预填充的数据进行tetsing,请查看此项,并使用@pvpkiran,它们是常见的组合列表:语言、国家。。。我将看一看这篇文章,感谢您参考了github链接中的示例代码#Bean MongoClient MongoClient()从尝试连接到真实数据库的我的MongoConfig调用)-java.lang.IllegalStateException:执行集成测试时加载ApplicationContext失败错误。需要做什么?有什么想法吗?
    @RunWith(SpringRunner.class)
    @SpringBootTest
    @AutoConfigureMockMvc