Aplicativo do console de inicialização Spring

Aplicativo do console de inicialização Spring

1. Visão geral

Neste tutorial rápido, vamos explorar como criar um aplicativo simples baseado em console usando Spring Boot.

2. Dependências do Maven

Nosso projeto depende do pai de inicialização por mola:


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

A dependência inicial necessária é:


    org.springframework.boot
    spring-boot-starter

3. Aplicação de console

Nosso aplicativo de console consiste em uma única classe:SpringBootConsoleApplication.java – esta é a classe principal para nosso aplicativo de console Spring Boot.

Estamos usandoSpring’s @SpringBootApplication annotation em nossa classe principal para habilitar a configuração automática.

Esta classe também implementaSpring’s CommandLineRunner interface. CommandLineRunner é uma interface simples do Spring Boot com um métodorun. Spring Boot irá chamar automaticamente o métodorun de todos os beans implementando esta interface após o contexto do aplicativo ter sido carregado.

Aqui está o nosso aplicativo de 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]);
        }
    }
}

Devemos também especificarspring.main.web-application-type=NONESpring property. Esta propriedade informará explicitamente ao Spring que este não é um aplicativo da web.

Quando executamosSpringBootConsoleApplication, podemos ver o seguinte registrado:

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

Observe que o métodorun é chamado depois que o contexto do aplicativo é carregado, mas antes que a execução do métodomain seja concluída.

A maioria dos aplicativos de console terá apenas uma única classe que implementaCommandLineRunner. Se seu aplicativo tiver várias classes que implementamCommandLineRunner, a ordem de execução pode ser especificada usandoSpring’s @Order annotation.

4. Conclusão

Neste artigo, resumimos como criar um aplicativo simples baseado em console usando Spring Boot.

O código-fonte completo de nossos exemplos aqui é, como sempre,over on GitHub.