How can you load initial data in MongoDB through Spring Boot?
you can define your data in json/xml and use populator elements of the repository to load the data.
https://docs.spring.io/spring-data/mongodb/docs/2.0.9.RELEASE/reference/html/#core.repository-populators
You can use a repository populator with Spring Data MongoDB. Let me demonstrate this with a code sample in 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
}
}
Put test_data.json
in resources directory.
To load initial data you can use db migration tool like MongoBee
It's very useful option to handle data initialization in java. You just need to configure @Bean public Mongobee mongobee
in your spring boot and setup component scan for data ChangeLogs where data creation actually happens.