Witam.
Robię projekt w spring boot, korzystam na ten moment z emulowanej lokalnej bazy danych, problem w tym że dane się kasują przy każdym resecie aplikacji. Jaki jest najlepszy sposób na dodanie danych startowych do bazy np. konto admina?
0
0
package com.example;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class MyFirstSpringBootAppApplication{
public static void main(String[] args) {
SpringApplication.run(MyFirstSpringBootAppApplication.class, args);
}
@Bean
public CommandLineRunner prepareDatabase() {
return (args) -> {
//nasza logika
};
}
}
public CommandLineRunner prepareDatabase(MyOwnRepo userRepo) {
etc.
0
@Bean
public InitializingBean insertDefaultUsers() {
return new InitializingBean() {
@Override
public void afterPropertiesSet() {
}
}
}
I w ciele metody to co chcesz zrobić.
0
Lub:
@Component
public class DatabaseInitializer {
@PostConstruct
public void initDatabase() {
// tutaj inicjalizacja bazy
}
}
0
Hej, podejścia są różne, możesz - jak wyżej programatycznie tworzyć i persystując obiekty encji. Możesz też ustawić Springa tak, by odpalał sobie skrypty z SQLowymi poleceniami tuż po starcie serwera.
Akurat mam taki program pod ręką, Spring Boot + H2 w pamięci inicjalizowana ze skryptów. Projekt jeszcze w powijakach, ale działa. Znajdziesz potrzebną klaskę konfiguracji i przykładowe skrypty, może będzie przydatne.