Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Diferencias haciendo uso de "implements"

Buenas!

¿Alguién podría explicarme cuál es la diferencia entre estas dos porciones de código? Ya que en ambos casos se imprime el "Hola Mundo" por consola.

Buscando info sobre el tema, encontré que hacen uso del "@component" sobre el "public static void main"; que aquí en el video de la clase la Instructora no lo aplica en el código de ejemplo. ¿Que función cumple? ¿Afecta en algo?

package com.aluracursos.screenmatch;


@SpringBootApplication
public class ScreenmatchApplication {

    
    public static void main(String[] args) {
        SpringApplication.run(ScreenmatchApplication.class, args);
                
                System.out.println("Hola Mundo desde Spring");
    }

}

2da. opción. Haciendo uso del "implements"

package com.aluracursos.screenmatch;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ScreenmatchApplication implements CommandLineRunner {

    
    public static void main(String[] args) {
        SpringApplication.run(ScreenmatchApplication.class, args);
                
                //System.out.println("Hola Mundo desde Spring");
    }

    @Override
    public void run(String... args) throws Exception {
        System.out.println("Hola Mundo desde Spring");
        
    }

}

Desde ya, gracias!

1 respuesta

¡Hola Estudiante, espero que estés bien!

Entiendo que estás buscando comprender la diferencia entre dos porciones de código que utilizan Spring Framework, una con el método main tradicional y otra haciendo uso de implements CommandLineRunner.

La diferencia principal radica en el uso de la interfaz CommandLineRunner. Cuando una clase implementa esta interfaz, debe proporcionar una implementación para el método run, lo que permite ejecutar ciertas acciones al iniciar la aplicación. En el segundo caso, al implementar CommandLineRunner, puedes realizar acciones específicas al iniciar la aplicación, como imprimir un mensaje en la consola, cargar una base de datos, entre otras.

En cuanto al uso de @Component sobre el método main, esta anotación se utiliza para indicar que una clase es un componente de Spring y debe ser escaneada en busca de beans. En el caso del método main, si no se aplica la anotación @Component, la clase no será considerada como un componente de Spring y no se beneficiará de la inyección de dependencias u otras características de Spring.

Espero que esta explicación te ayude a comprender las diferencias. Si tienes más preguntas, no dudes en preguntar. ¡Espero haber ayudado y buenos estudios!