J'ai une simple application Spring Boot qui récupère les messages d'une file d'attente JMS et enregistre certaines données dans un fichier journal, mais n'a pas besoin d'un serveur Web. Existe-t-il un moyen de démarrer Spring Boot sans le serveur Web?
java
spring-boot
Michael
la source
la source
spring-jms
(je suppose) en tant que dépendance. Ensuite, lancez simplement l'application, aucun serveur ne sera démarré.Réponses:
Spring boot n'inclura pas le tomcat intégré si vous n'avez pas de dépendances Tomcat sur le chemin de classe. Vous pouvez voir ce fait vous-même à la classe
EmbeddedServletContainerAutoConfiguration
dont vous pouvez trouver la source ici .La viande du code est l'utilisation de l'
@ConditionalOnClass
annotation sur la classeEmbeddedTomcat
Aussi, pour plus d'informations, consultez ceci et ce guide et cette partie de la documentation
la source
gs-convert-jar-to-war/complete
projet Maven n'ajouter un serveur Tomcat intégré, en dépit de la dépendance déclarée avec la portée . Cela ressemble à un bug. Voir également stackoverflow.com/q/25991789/923560spring-boot-starter-tomcat
provided
si vous souhaitez exécuter spring boot sans conteneur de servlet, mais avec un sur le chemin de classe (par exemple pour les tests), utilisez ce qui suit, comme décrit dans la documentation de spring boot :
aussi, je viens de tomber sur cette propriété:
la source
application.properties
fonctionne parfaitement bien.spring.main.web-environment
est désormais obsolète.spring.main.web-application-type=none
Spring Boot 2.x
Propriétés de l'application
ou SpringApplicationBuilder
Où WebApplicationType :
la source
Vous pouvez créer quelque chose comme ceci:
Et
La dépendance est toujours là mais non utilisée.
la source
La solution la plus simple. dans votre fichier application.properties. ajoutez la propriété suivante comme mentionné par une réponse précédente:
Pour la version 2.0.0 de Spring boot starter, utilisez la propriété suivante:
Pour obtenir de la documentation sur toutes les propriétés, utilisez ce lien: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
la source
Pour Spring boot v2.1.3.RELEASE, ajoutez simplement les propriétés suivantes dans application.propertes:
la source
Utilisez ce code.
la source
Si vous avez besoin d'une fonctionnalité Web dans votre application (comme
org.springframework.web.client.RestTemplate
pour les appels REST) mais que vous ne souhaitez pas démarrer un serveur TOMCAT, excluez-la simplement dans le POM:la source
Grâce au programme:
Via le fichier application.properties:
Via le fichier application.yml:
la source
Si vous souhaitez utiliser l'un des modèles "Getting Started" du site spring.io, mais que vous n'avez besoin d'aucun des éléments liés aux servlets fournis avec le modèle "default" ("gs / spring-boot"), vous pouvez essayer le modèle de tâches de planification (dont le pom * contient spring-boot-starter, etc.) à la place:
https://spring.io/guides/gs/scheduling-tasks/
Cela vous donne Spring Boot et l'application fonctionne de manière autonome (aucun servlet ou spring-webmvc, etc. n'est inclus dans le pom). C'est ce que vous vouliez (même si vous devrez peut-être ajouter des éléments spécifiques à JMS, comme quelqu'un d'autre le souligne déjà).
[* J'utilise Maven, mais je suppose qu'une version Gradle fonctionnera de la même manière].
la source
Supprimer la dépendance suivante sur votre fichier pom fonctionnera pour moi
la source
Pour Kotling, voici ce que j'ai utilisé ces derniers temps:
Et tout démarre normalement avec un shell avec ma commande personnalisée disponible.
la source
Vous pouvez utiliser la dépendance spring-boot-starter. Cela n'aura pas le contenu Web.
la source
Dans Spring Boot, Spring Web dependency fournit un serveur Web Apache Tomcat intégré. Si vous supprimez la dépendance spring-boot-starter-web dans le fichier pom.xml, il ne fournit pas de serveur Web intégré.
supprimer la dépendance suivante
la source
Similaire à @nayun oh réponse ci-dessus, mais pour les anciennes versions de Spring, utilisez ce code:
la source