Spring Boot Rest 4/10 – Guardando información en Mongo DB al arranque de la aplicación

22

En el anterior artículo, revisamos cómo interactuar con Mongo DB mediante los repositorios de Sping. En este artículo demostraremos cómo guardar información en Mongo DB al arranque de la aplicación de Spring Boot. 🍃

Data Loader

Para guardar información en Mongo DB al arranque de la aplicación, necesitamos una clase que se ejecute antes de que la aplicación exponga sus endpoints, por lo que crearemos un Componente (al cual llamaremos DataLoader) de Spring y agregaremos las operaciones necesarias dentro de su constructor y en un método anotado con @PostConstruct. Spring Boot construirá primero este componente como parte de su arranque y tendremos la información lista para cuando los endpoints estén expuestos. 🤓

@Component
@Log
public class MongoDataLoader {

    @Autowired
    private CoffeeRepository coffeeRepository;

    private List<Coffee> coffeList;

    public MongoDataLoader() {
        Coffee americano = Coffee.builder()
                .name("Americano")
                .description("Hot water to a shot of espresso coffee.")
                .price(2.0)
                .build();

        Coffee espresso = Coffee.builder()
                .name("Espresso")
                .description("Shoot boiling water under high pressure through finely ground up coffee beans and then pour into a tiny mug.")
                .price(1.5)
                .build();

        Coffee cappuccino = Coffee.builder()
                .name("Cappuccino")
                .description("Shot of espresso, then a shot of steamed milk, and finally a layer of frothed, foamy milk.")
                .price(2.5)
                .build();

        Coffee latte = Coffee.builder()
                .name("Latte")
                .description("Steamed (or scolded) milk and a single shot of coffee")
                .price(2.5)
                .build();

        coffeList = Arrays.asList(americano, espresso, cappuccino, latte);
    }

    @PostConstruct
    private void loadInfo() {
        log.info(String.format("Loading info to Mongo: %s", coffeList.toString()));
        coffeeRepository.deleteAll();
        coffeeRepository.saveAll(coffeList);
        log.info("Load to Mongo succeeded");
    }

Como puedes observar en este Componente de Spring, inicializamos en el constructor los datos que deseamos insertar (en este caso los tipos de café). Y en el método anotado, insertamos dichos datos, no sin antes asegurarnos que no hay ningún otra información de inicio, para evitar duplicidad.

La anotación @Log, forma parte de la biblioteca de Lombok y nos permitirá hacer impresiones de Log sin la necesidad de initializer en cada clase el mismo. 😁

En el próximo artículo, revisaremos cómo exponer nuestros endpoints mediante Controladores de Spring. 😉

Repositorio de Github

Puedes encontrar el código del proyecto en el siguiente repositorio de Github:

https://github.com/chuucks/coffee-service


La configuración del proyecto de Spring Boot con Gradle, conexión a Mongo DB y autenticación básica de HTTP, en esta plataforma tiene únicamente fines educativos e ilustrativos. Para usar en producción requiere de mayores consideraciones, configuraciones y especificaciones. No dudes en contactarnos para cualquier duda o comentario o incluso abrir un Issue de Github en el repositorio del proyecto. 👍🏾

Comments

comments