Eu tenho um aplicativo Spring Boot simples que obtém mensagens de uma fila JMS e salva alguns dados em um arquivo de log, mas não precisa de um servidor web. Existe alguma maneira de iniciar o Spring Boot sem o servidor web?
java
spring-boot
Michael
fonte
fonte
spring-jms
(eu acho) como uma dependência. Em seguida, basta iniciar o aplicativo, nenhum servidor será iniciado.Respostas:
O Spring boot não incluirá tomcat incorporado se você não tiver dependências do Tomcat no classpath. Você mesmo pode ver esse fato na classe
EmbeddedServletContainerAutoConfiguration
cuja fonte você pode encontrar aqui .A essência do código é o uso da
@ConditionalOnClass
anotação na classeEmbeddedTomcat
Além disso, para obter mais informações, verifique este e este guia e esta parte da documentação
fonte
gs-convert-jar-to-war/complete
projeto Maven não adicionar um servidor Tomcat incorporado, apesar daspring-boot-starter-tomcat
dependência declarada com escopoprovided
. Isso parece um bug. Consulte também stackoverflow.com/q/25991789/923560se você deseja executar o spring boot sem um contêiner de servlet, mas com um no caminho de classe (por exemplo, para testes), use o seguinte, conforme descrito na documentação do spring boot :
Além disso, acabei de encontrar esta propriedade:
fonte
application.properties
funciona perfeitamente bem.spring.main.web-environment
está obsoleta. Ainda funciona para o Boot 2.1.1spring.main.web-application-type=none
Spring Boot 2.x
Propriedades do aplicativo
ou SpringApplicationBuilder
Onde WebApplicationType :
fonte
Você pode criar algo assim:
E
A dependência ainda está lá, mas não é usada.
fonte
A solução mais simples. em seu arquivo application.properties. adicione a seguinte propriedade conforme mencionado por uma resposta anterior:
Para a versão 2.0.0 do Spring boot starter, use a seguinte propriedade:
Para obter a documentação sobre todas as propriedades, use este link: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
fonte
Para Spring boot v2.1.3.RELEASE, basta adicionar as seguintes propriedades em application.propertes:
fonte
Use este código.
fonte
Se você precisa de funcionalidade da web em seu aplicativo (como
org.springframework.web.client.RestTemplate
para chamadas REST), mas não deseja iniciar um servidor TOMCAT, apenas exclua-o no POM:fonte
Através do programa:
Por meio do arquivo application.properties:
Por meio do arquivo application.yml:
fonte
Se você quiser usar um dos modelos de "Primeiros passos" do site spring.io, mas não precisa de nenhuma das coisas relacionadas ao servlet que vem com o modelo "default" ("gs / spring-boot"), você pode tentar o modelo de tarefas de agendamento (cujo pom * contém spring-boot-starter etc) em vez disso:
https://spring.io/guides/gs/scheduling-tasks/
Isso dá a você Spring Boot, e o aplicativo é executado como um autônomo (nenhum servlet ou spring-webmvc etc. está incluído no pom). Que é o que você queria (embora possa precisar adicionar algumas coisas específicas do JMS, como alguém já indicou).
[* Estou usando o Maven, mas suponha que uma versão do Gradle funcione de maneira semelhante].
fonte
Remover a seguinte dependência do seu arquivo pom funcionará para mim
fonte
Para Kotling, aqui está o que usei recentemente:
E tudo inicializa normalmente terminando com um shell com meu comando personalizado disponível.
fonte
Você pode usar a dependência spring-boot-starter. Isso não terá as coisas da web.
fonte
Semelhante à resposta @nayun oh acima, mas para versões anteriores do Spring, use este código:
fonte