Ich habe eine einfache Spring Boot-Anwendung, die Nachrichten aus einer JMS-Warteschlange abruft und einige Daten in einer Protokolldatei speichert, aber keinen Webserver benötigt. Gibt es eine Möglichkeit, Spring Boot ohne den Webserver zu starten?
java
spring-boot
Michael
quelle
quelle
spring-jms
(ich denke) als Abhängigkeit hinzufügen . Dann starten Sie einfach die Anwendung, es wird kein Server gestartet.Antworten:
Spring Boot enthält kein eingebettetes Tomcat, wenn Sie keine Tomcat-Abhängigkeiten vom Klassenpfad haben. Sie können diese Tatsache selbst in der Klasse anzeigen,
EmbeddedServletContainerAutoConfiguration
deren Quelle Sie hier finden .Das Fleisch des Codes ist die Verwendung der
@ConditionalOnClass
Anmerkung zur KlasseEmbeddedTomcat
Weitere Informationen finden Sie in diesem und diesem Handbuch sowie in diesem Teil der Dokumentation
quelle
gs-convert-jar-to-war/complete
Maven - Projekt hat einen eingebetteten Tomcat - Server hinzufügen, trotz derspring-boot-starter-tomcat
Abhängigkeit mit Gültigkeitsbereich deklariertprovided
. Das fühlt sich an wie ein Käfer. Siehe auch stackoverflow.com/q/25991789/923560Wenn Sie Spring Boot ohne Servlet-Container ausführen möchten, jedoch mit einem im Klassenpfad (z. B. für Tests), verwenden Sie Folgendes, wie in der Spring Boot-Dokumentation beschrieben :
Außerdem bin ich gerade über diese Eigenschaft gestolpert:
quelle
application.properties
funktioniert einwandfrei.spring.main.web-environment
ist jetzt veraltet. Funktioniert immer noch für Boot 2.1.1spring.main.web-application-type=none
Spring Boot 2.x.
Anwendungseigenschaften
oder SpringApplicationBuilder
Wo WebApplicationType :
quelle
Sie können so etwas erstellen:
Und
Die Abhängigkeit ist zwar noch vorhanden, wird aber nicht verwendet.
quelle
Die einfachste Lösung. in Ihrer application.properties-Datei. Fügen Sie die folgende Eigenschaft hinzu, wie in einer vorherigen Antwort erwähnt:
Verwenden Sie für Version 2.0.0 von Spring Boot Starter die folgende Eigenschaft:
Verwenden Sie zur Dokumentation aller Eigenschaften diesen Link: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
quelle
Fügen Sie für Spring Boot v2.1.3.RELEASE einfach die folgenden Eigenschaften zu application.propertes hinzu:
quelle
Verwenden Sie diesen Code.
quelle
Wenn Sie in Ihrer Anwendung Webfunktionen benötigen (wie
org.springframework.web.client.RestTemplate
bei REST-Aufrufen), aber keinen TOMCAT-Server starten möchten, schließen Sie ihn einfach im POM aus:quelle
Durch Programm:
Über die Datei application.properties:
Über die Datei application.yml:
quelle
Wenn Sie eine der Vorlagen "Erste Schritte" von der spring.io-Site verwenden möchten, aber keine Servlet-bezogenen Inhalte benötigen, die mit der Vorlage "Standard" ("gs / spring-boot") geliefert werden, Sie können stattdessen die Scheduling-Tasks-Vorlage (deren pom * Spring-Boot-Starter usw. enthält) ausprobieren:
https://spring.io/guides/gs/scheduling-tasks/
Das gibt Ihnen Spring Boot und die App läuft als Standalone (keine Servlets oder Spring-Webmvc usw. sind im POM enthalten). Welches ist, was Sie wollten (obwohl Sie möglicherweise einige JMS-spezifische Dinge hinzufügen müssen, wie bereits jemand anderes betont).
[* Ich verwende Maven, gehe aber davon aus, dass ein Gradle-Build ähnlich funktioniert].
quelle
Das Entfernen der folgenden Abhängigkeit von Ihrer POM-Datei funktioniert für mich
quelle
Für Kotling habe ich in letzter Zeit Folgendes verwendet:
Und alles, was normalerweise startet, endet mit einer Shell, für die mein benutzerdefinierter Befehl verfügbar ist.
quelle
Ähnlich wie bei @nayun oh Antwort oben, aber für ältere Versionen von Spring verwenden Sie diesen Code:
quelle
Sie können die Spring-Boot-Starter-Abhängigkeit verwenden. Dies wird nicht das Web-Zeug haben.
quelle