如何通过Spring Boot在MongoDB中加载初始数据?

时间:2017-12-06 15:56:37

标签: java mongodb spring-boot nosql spring-data-mongodb

是否可以使用MongoDB或任何其他文件在src/main/resources/data.sql数据库中加载初始数据?

我了解data.sql用于SQL数据库,而MongoDBNOSQL数据库。但只是想知道data.sql数据库是否有NOSQL的等价物。

在谷歌搜索时,我发现了这个SO链接(Spring Boot - Loading Initial Data),它正在寻找我正在寻找的东西,但它仍然不是一个独立的文件data.sql

3 个答案:

答案 0 :(得分:3)

要加载初始数据,您可以使用像MongoBee

这样的数据库迁移工具

在java中处理数据初始化是非常有用的选项。您只需要在弹簧引导和设置组件扫描中配置@Bean public Mongobee mongobee以获取实际发生数据创建的数据ChangeLog。

答案 1 :(得分:2)

您可以在Spring Data MongoDB中使用存储库填充器。让我用Kotlin中的代码示例对此进行演示:

@Configuration
class TestApplicationConfig {
    @Value("classpath:test_data.json")
    private lateinit var testData: Resource

    @Bean
    @Autowired
    fun repositoryPopulator(objectMapper: ObjectMapper): Jackson2RepositoryPopulatorFactoryBean {
        val factory = Jackson2RepositoryPopulatorFactoryBean()
        // inject your Jackson Object Mapper if you need to customize it:
        factory.setMapper(objectMapper)
        factory.setResources(arrayOf(testData))
        return factory
    }
}

test_data.json放入资源目录。

答案 2 :(得分:1)

您可以在json / xml中定义数据,并使用存储库的populator元素加载数据。

https://docs.spring.io/spring-data/mongodb/docs/2.0.9.RELEASE/reference/html/#core.repository-populators