1
resposta

[Dúvida] CommandLineApp não encerra mais após a inclusão do spring-boot-starter-web

Olá, pessoal! Percebi que após adicionar a nova dependência spring-boot-starter-web ao projeto, quando eu executo o arquivo anterior que funcionava via linha de comando, ao selecionar a opção para sair do menu, o programa não é mais encerrado. Por que isso acontece?

Além disso, eu percebi que se eu não comentar o arquivo de CommandLine, ela é executada quando a WebApp é executada. Pelo que entendi, o Spring Boot "varre" automaticamente todos os arquivos do pacote. É isso mesmo que ocorre? Existe uma solução para os dois problemas para que não seja necessário comentar e/ou remover a dependência starter-web?

Valeu!

1 resposta

Acredito que temos duas ideias diferentes aqui. Quando utilizamos o spring-boot-starter-web, estamos querendo trabalhar com um servidor web pronto para receber chamadas HTTP ou utilizando qualquer outro protocolo web. Por isso, essa dependência traz consigo uma série de auto-configurações, incluindo a inicialização automática de um servidor web embutido, como o Tomcat, por exemplo.

Isso pode causar conflitos com a execução de uma aplicação CommandLine, que geralmente é projetada para ser uma aplicação de linha de comando simples, sem a necessidade de um servidor web.

Na aula Utilizando o Spring Web, o que a Jacqueline e a Iasmin estão fazendo é, ao invés de utilizarmos uma aplicação local e via linha de comando, elas estão transformando em uma aplicação Web, removendo da classe Main a implementação da interface CommandLineRunner..

Conclusão: o ideal é você trabalhar OU com uma aplicação web OU com uma aplicação de linha de comando.