Application de console de démarrage Spring

Application de console de démarrage Spring

1. Vue d'ensemble

Dans ce rapide didacticiel, nous allons explorer comment créer une application simple basée sur une console à l'aide de Spring Boot.

2. Dépendances Maven

Notre projet repose sur le parent spring-boot:


    org.springframework.boot
    spring-boot-starter-parent
    2.0.3.RELEASE

La dépendance initiale requise est:


    org.springframework.boot
    spring-boot-starter

3. Application de la console

Notre application console se compose d'une seule classe:SpringBootConsoleApplication.java  - c'est la classe principale de l'application console Spring Boot.

Nous utilisonsSpring’s @SpringBootApplication annotation sur notre classe principale pour activer la configuration automatique.

Cette classe implémente égalementSpring’s CommandLineRunner interface. CommandLineRunner est une simple interface Spring Boot avec une méthoderun. Spring Boot appellera automatiquement la méthoderun de tous les beans implémentant cette interface après le chargement du contexte d'application.

Voici notre application console:

@SpringBootApplication
public class SpringBootConsoleApplication
  implements CommandLineRunner {

    private static Logger LOG = LoggerFactory
      .getLogger(SpringBootConsoleApplication.class);

    public static void main(String[] args) {
        LOG.info("STARTING THE APPLICATION");
        SpringApplication.run(SpringBootConsoleApplication.class, args);
        LOG.info("APPLICATION FINISHED");
    }

    @Override
    public void run(String... args) {
        LOG.info("EXECUTING : command line runner");

        for (int i = 0; i < args.length; ++i) {
            LOG.info("args[{}]: {}", i, args[i]);
        }
    }
}

Nous devrions également spécifier lesspring.main.web-application-type=NONESpring property. Cette propriété informera explicitement Spring qu'il ne s'agit pas d'une application Web.

Lorsque nous exécutonsSpringBootConsoleApplication, nous pouvons voir ce qui suit journalisé:

00:48:51.888 [main] INFO  c.b.s.SpringBootConsoleApplication - STARTING THE APPLICATION
00:48:52.752 [main] INFO  c.b.s.SpringBootConsoleApplication - No active profile set, falling back to default profiles: default
00:48:52.851 [main] INFO  o.s.c.a.AnnotationConfigApplicationContext
  - Refreshing org.spring[email protected]6497b078: startup date [Sat Jun 16 00:48:52 IST 2018]; root of context hierarchy
00:48:53.832 [main] INFO  o.s.j.e.a.AnnotationMBeanExporter - Registering beans for JMX exposure on startup
00:48:53.854 [main] INFO  c.b.s.SpringBootConsoleApplication - EXECUTING : command line runner
00:48:53.854 [main] INFO  c.b.s.SpringBootConsoleApplication - args[0]: Hello World!
00:48:53.860 [main] INFO  c.b.s.SpringBootConsoleApplication - Started SpringBootConsoleApplication in 1.633 seconds (JVM running for 2.373)
00:48:53.860 [main] INFO  c.b.s.SpringBootConsoleApplication - APPLICATION FINISHED
00:48:53.868 [Thread-2] INFO  o.s.c.a.AnnotationConfigApplicationContext
  - Closing org.spring[email protected]6497b078: startup date [Sat Jun 16 00:48:52 IST 2018]; root of context hierarchy
00:48:53.870 [Thread-2] INFO  o.s.j.e.a.AnnotationMBeanExporter - Unregistering JMX-exposed beans on shutdown

Notez que la méthoderun est appelée après le chargement du contexte d'application mais avant la fin de l'exécution de la méthodemain.

La plupart des applications console n'auront qu'une seule classe qui implémenteCommandLineRunner. Si votre application a plusieurs classes qui implémententCommandLineRunner, l'ordre d'exécution peut être spécifié à l'aide deSpring’s @Order annotation.

4. Conclusion

Dans cet article, nous avons résumé comment créer une application simple basée sur une console à l'aide de Spring Boot.

Le code source complet de nos exemples ici est, comme toujours,over on GitHub.