Spring Boot usando ApplicationRunner e CommandLineRunner
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
Última atualização em: | 20388 Visualizações
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() );
}
}
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.