У меня есть простое приложение Spring Boot, которое получает сообщения из очереди JMS и сохраняет некоторые данные в файл журнала, но не требует веб-сервера. Есть ли способ запустить Spring Boot без веб-сервера?
java
spring-boot
Майкл
источник
источник
spring-jms
элемент- стартер и добавить (я думаю) в качестве зависимости. Затем просто запустите приложение, сервер не запустится.Ответы:
Spring boot не будет включать встроенный tomcat, если у вас нет зависимостей Tomcat от пути к классам. Вы можете сами убедиться в этом на занятии
EmbeddedServletContainerAutoConfiguration
, источник которого вы можете найти здесь .Суть кода - использование
@ConditionalOnClass
аннотации к классуEmbeddedTomcat
Кроме того , для получения дополнительной информации посетите это и это руководство и эту часть документации
источник
gs-convert-jar-to-war/complete
проект Maven действительно добавляет встроенный сервер Tomcat, несмотря наspring-boot-starter-tomcat
зависимость, объявленную в области видимостиprovided
. Это похоже на ошибку. Также см. Stackoverflow.com/q/25991789/923560если вы хотите запустить весеннюю загрузку без контейнера сервлета, но с контейнером в пути к классам (например, для тестов), используйте следующее, как описано в документации по весенней загрузке :
Кроме того, я только что наткнулся на это свойство:
источник
application.properties
отлично работает.spring.main.web-environment
устарело. Все еще работает для Boot 2.1.1spring.main.web-application-type=none
Весенняя загрузка 2.x
Свойства приложения
или SpringApplicationBuilder
Где WebApplicationType :
источник
Вы можете создать что-то вроде этого:
И
Зависимость все еще существует, но не используется.
источник
Самое простое решение. в вашем файле application.properties. добавьте следующее свойство, как указано в предыдущем ответе:
Для версии 2.0.0 стартера загрузки Spring используйте следующее свойство:
Для документации по всем свойствам используйте эту ссылку: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
источник
Для Spring boot v2.1.3.RELEASE просто добавьте следующие свойства в application.propertes:
источник
Используйте этот код.
источник
Если вам нужны веб-функции в вашем приложении (например,
org.springframework.web.client.RestTemplate
для вызовов REST), но вы не хотите запускать сервер TOMCAT, просто исключите его из POM:источник
Через программу:
Через файл application.properties:
Через файл application.yml:
источник
Если вы хотите использовать один из шаблонов «Приступая к работе» с сайта spring.io, но вам не нужны какие-либо вещи, связанные с сервлетами, которые поставляются с шаблоном «default» («gs / spring-boot»), вместо этого вы можете попробовать шаблон scheduling-tasks (чей pom * содержит spring-boot-starter и т. д.):
https://spring.io/guides/gs/scheduling-tasks/
Это дает вам Spring Boot, и приложение работает как автономное (в pom не включены сервлеты или spring-webmvc и т.д.). Это то, что вы хотели (хотя вам может потребоваться добавить некоторые вещи, специфичные для JMS, как уже указывает кто-то другой).
[* Я использую Maven, но предполагаю, что сборка Gradle будет работать аналогично].
источник
Удаление следующей зависимости от вашего файла pom будет работать для меня
источник
Вот что я использовал для Котлинга в последнее время:
И все, что обычно загружается, заканчивается оболочкой с доступной моей пользовательской командой.
источник
Вы можете использовать зависимость spring-boot-starter. У этого не будет веб-материала.
источник
При загрузке Spring веб-зависимость Spring предоставляет встроенный веб-сервер Apache Tomcat. Если вы удалите зависимость spring-boot-starter-web в pom.xml, тогда он не будет предоставлять встроенный веб-сервер.
удалить следующую зависимость
источник
Подобно ответу @nayun oh выше, но для более старых версий Spring используйте этот код:
источник