Mam prostą aplikację Spring Boot, która pobiera komunikaty z kolejki JMS i zapisuje niektóre dane w pliku dziennika, ale nie potrzebuje serwera WWW. Czy istnieje sposób na uruchomienie Spring Boot bez serwera WWW?
java
spring-boot
Michael
źródło
źródło
spring-jms
(chyba) jako zależność. Następnie wystarczy uruchomić aplikację, żaden serwer nie zostanie uruchomiony.Odpowiedzi:
Spring boot nie będzie zawierał osadzonego tomcat, jeśli nie masz zależności Tomcat w ścieżce klas. Możesz sam zobaczyć ten fakt na zajęciach,
EmbeddedServletContainerAutoConfiguration
których źródło znajdziesz tutaj .Istotą kodu jest użycie
@ConditionalOnClass
adnotacji w klasieEmbeddedTomcat
Ponadto, aby uzyskać więcej informacji znajdziesz ten i ten przewodnik i tym część dokumentacji
źródło
gs-convert-jar-to-war/complete
projekt Maven ma dodać wbudowany serwer Tomcat, pomimospring-boot-starter-tomcat
zależność zadeklarowana z zakresuprovided
. To wygląda na błąd. Zobacz także stackoverflow.com/q/25991789/923560jeśli chcesz uruchomić rozruch sprężynowy bez kontenera serwletów, ale z jednym na ścieżce klas (np. do testów), użyj następujących czynności, jak opisano w dokumentacji rozruchu sprężyny :
również natknąłem się na tę właściwość:
źródło
application.properties
działa doskonale.spring.main.web-environment
jest teraz przestarzała. Nadal działa dla Boot 2.1.1spring.main.web-application-type=none
Spring Boot 2.x
Właściwości aplikacji
lub SpringApplicationBuilder
Gdzie WebApplicationType :
źródło
Możesz stworzyć coś takiego:
I
Zależność nadal istnieje, ale nie jest używana.
źródło
Najprostsze rozwiązanie. w pliku application.properties. dodaj następującą właściwość, jak wspomniano w poprzedniej odpowiedzi:
W przypadku wersji 2.0.0 Spring Boot Starter użyj następującej właściwości:
Aby uzyskać dokumentację dotyczącą wszystkich nieruchomości, użyj tego łącza: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
źródło
Dla Spring boot v2.1.3.RELEASE, po prostu dodaj następujące właściwości do application.propertes:
źródło
Użyj tego kodu.
źródło
Jeśli potrzebujesz funkcjonalności sieciowej w swojej aplikacji (np.
org.springframework.web.client.RestTemplate
Dla wywołań REST), ale nie chcesz uruchamiać serwera TOMCAT, po prostu wyklucz go w POM:źródło
W ramach programu:
Za pomocą pliku application.properties:
Poprzez plik application.yml:
źródło
Jeśli chcesz użyć jednego z szablonów „Getting Started” ze strony spring.io, ale nie potrzebujesz żadnych elementów związanych z serwletami, które są dostarczane z szablonem „default” („gs / spring-boot”), możesz zamiast tego wypróbować szablon planowania zadań (którego pom * zawiera starter spring-boot-starter itp.):
https://spring.io/guides/gs/scheduling-tasks/
Daje to Spring Boot, a aplikacja działa jako samodzielna aplikacja (żadne serwlety, spring-webmvc itp. Nie są zawarte w pom). To jest to, czego chciałeś (chociaż może być konieczne dodanie pewnych rzeczy specyficznych dla JMS, jak ktoś inny już wskazuje).
[* Używam Mavena, ale załóżmy, że kompilacja Gradle będzie działać podobnie].
źródło
Usuń następującą zależność od twojego pliku pom
źródło
Dla Kotlinga oto czego ostatnio użyłem:
I wszystko uruchamia się normalnie, kończąc na powłoce z dostępnym moim niestandardowym poleceniem.
źródło
Możesz użyć zależności sprężyna-rozruch-rozrusznik. To nie będzie miało treści internetowych.
źródło
W przypadku rozruchu Spring, zależność Spring Web zapewnia wbudowany serwer WWW Apache Tomcat. Jeśli usuniesz zależność spring-boot-starter-web w pom.xml, nie zapewni on wbudowanego serwera internetowego.
usuń następującą zależność
źródło
Podobnie jak @nayun oh answer powyżej, ale w przypadku starszych wersji Spring użyj tego kodu:
źródło