Spring boot runtime database dane startowe

0

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
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.

https://github.com/dawidkotarba/Playground

1 użytkowników online, w tym zalogowanych: 0, gości: 1