Spring Boot usando ApplicationRunner e CommandLineRunner

Postado em por Wolmir Cezer Garbin em Spring Boot | 318 Visualizações
Última atualização em:

Se está usando Spring Boot e precisa executar algum código antes de iniciar um aplicativo, então pode utilizar ApplicationRunner ou CommandLineRunner, entenda como eles funcionam

O Spring Boot fornece duas interfaces para executar partes específicas de código quando um aplicativo é iniciado, o CommandLineRunner e ApplicationRunner.

Vamos entender cada uma dessas interfaces através de exemplos:

CommandLineRunner

O CommandLineRunner requer a implementação de um método (run) que recebe por parâmetro uma matriz de String. Veja abaixo um exemplo de uso:

import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Configuration;

@Configuration
public class Exemplo02 implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        System.out.println( "CommandLineRunner" );
        System.out.println( args );
    }
}

ApplicationRunner

O ApplicationRunner requer a implementação de um método (run) que recebe por parâmetro a interface ApplicationArguments que possui métodos convenientes para obter argumentos. Veja um exemplo:

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.annotation.Configuration;

@Configuration
public class Exemplo01 implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments applicationArguments) throws Exception {
        System.out.println( "ApplicationRunner" );
        System.out.println( applicationArguments.getOptionNames() );
    }
}

Tem algo para vender? AnuncieOn.com

Qual é a ordem de execução?

Você pode definir uma ordem de execução para as duas configurações, basta adicionar a annotation @Order definindo a ordenação e substituir o @Configuration para @Component. Veja:

import org.springframework.stereotype.Component;

@Component
@Order(1)
public class Exemplo02 implements CommandLineRunner {
[...]

e

import org.springframework.stereotype.Component;

@Component
@Order(2)
public class Exemplo01 implements ApplicationRunner {
[...]

O resultado no console será:

CommandLineRunner
[Ljava.lang.String;@221207f6
ApplicationRunner
[]

Para que usar?

É ótimo quando você precisa preparar o micro serviço, incluindo um registro no banco de dados por exemplo ou enviando dados para outro micro serviço, dentre várias outras situações que pode fazer o uso destas interfaces.

Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Wolmir Cezer Garbin

Wolmir Cezer Garbin


Sou formado em Desenvolvimento de Sistemas para Internet pela faculdade Mater Dei e Pós graduado em Desenvolvimento de sistemas em Java pela UTFPR. Trabalho a mais de 9 anos com desenvolvimento em Java, Android e Web utilizando as principais tecnologias do mercado. Atuo como professor na faculdade Mater Dei, programador na Garbo Software e criador do Receitas de Código.

Ver mais

Tem algo para vender? AnuncieOn.com

FIQUE POR DENTRO

Receba as novidades todo mês em seu e-mail!

Apoiadores

Code Conference

Esta é uma conferência de código realizada na cidade de Pato Branco para dissiminar tendências e informações sobre programação e novas tecnológias

Veja mais sobre o Code Conference

Publique seu post no Receitas de Código

Agora você pode publicar seu post no Receitas de Código e compartilhar seu conhecimento com muitas pessoas!

Quero publicar