Spring Boot, en tant que produit de la meilleure pratique du framework Spring pour le concept de "Convention sur la configuration", peut nous aider à créer rapidement des applications indépendantes basées sur le cadre de printemps au niveau du produit. La plupart des applications de démarrage Spring nécessitent très peu de configuration pour s'exécuter rapidement. Il s'agit d'un micro-travail qui est tout à fait cohérent avec les microservices.
1. Package d'application Spring Boot
L'application Spring Boot peut être tapée dans un package de pot, avec Tomcat intégré, il peut donc être démarré directement. Cependant, avant le démarrage de l'application Spring Boot, l'emballage est d'abord nécessaire. Cet article parle de l'emballage du projet Maven. Les conditions préalables nécessaires à l'emballage (le contenu du fichier pom.xml) sont:
... <packaging> jar </packaging> ... <dependency> <proupId> org.springframework.boot </proupId> <Artifactid> printemps-boot-starter-web </ artifactid> </dependency> ... </ build> <glugins> <proupId> org.springframework.boot </proupId> <ArtefactId> Spring-Boot-Maven-Plugin </ ArfactId> <Inconguration> <Mainclass> Com. ***. Application </-mainclass> </ Configuration> <Cecultitions> <Exécution> </ Exécutions> </ Plugin> </plurs> </puil> </ Execution> </ Exécutions> </Glugin> </Gluns> </uild> ... ...
La commande Package est:
Package MVN Clean -dmaven.test.skip = True # Demo $ mvn Clean Package -dmaven.test.skip = true [info] Scanning for Projects ... [Avertissement] [AVERTISSEM org.springframework.boot: Spring-boot-maven-Plugin est manquant. @ ligne 38, colonne 17 [avertissement] [Avertissement] Il est fortement recommandé de résoudre ces problèmes car ils menacent la stabilité de votre bâtiment. [Avertissement] [Avertissement] Pour cette raison, les futures versions Maven pourraient ne plus soutenir la construction de tels projets malformés. [Avertissement] [info] [info] --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0.0.1-snapshot [info] --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- En fait) Pour copier des ressources filtrées, c'est-à-dire la construction dépend de la plate-forme! [Info] Copie de 1 ressource [info] [info] --- maven-compiler-plugin: 3.1: compiler (par défaut-composi) @ myproject --- [info] modifie - recompilant la module! [Avertissement] Encodage de fichiers n'a pas été défini, en utilisant un fichier de plate-forme UTF-8, ie build est le dépôt de plate-forme! / Utilisateurs / LTC / Spring Boot Demo / Target / Classes [Info] [Info] --- Maven-Resources-Plugin: 2.6: TestResources (par défaut-testsources) @ myproject --- [info] Not Copy Ressources de test [info] [info] --- Sources [info] [info] --- Maven-Surefire-Plugin: 2.12.4: test (test par défaut) @ myproject --- [info] Les tests sont ignorés. [Info] [info] --- Maven-Jar-Plugin: 2.4: Jar (par défaut-jar) @ myproject --- [Info] Building Jar: / Users / LTC / LTC / LTC Demo / Target / MyProject-0.0.1-Snapshot.jar [info] [info] --- Spring-Boot-Maven-Plugin: 1.5.0.rc1: Remackage (par défaut) @ myproject --- [info] ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ou run run -> maven build ... dans eclipse, remplissez le package propre -dmaven.test.skip = true in buts, run, le package est terminé.
2. Startup d'application de démarrage de Spring
La commande de démarrage de Spring Boot est:
java -jar application.jar # Demo $ java -jar cible / myproject-0.0.1-snapshot.jar. ____ __ _ /// ___'_ __ _ _ (_) _ __ __ _ / / / / / () / ___ | '_ |' _ | / / / `| / / / / / / / / / / / / / | | | | | | | | ____ | .__ | | _ | | _ | | =========================================. (/ Users / LTC / Spring Boot Demo / Target / MyProject-0.0.1-Snapshot.jar Démarré par Liutianchi dans / Users / LTC / Spring Boot Demo) 2017-01-13 15: 31: 36.916 Info 62119 --- [Main] com.test.example: pas de profil actif Ensemble de profil par défaut: Profiles par défaut 62119 --- [Main] AtionConfigeMedDedWebApplicationContext: Rafourshing org.springframework.boot.context.embedded.annotationConfigeMeddedWebapplicationContext@b1a58a3: Date de démarrage [FRI 13 janvier 15:31:36 CST 2017]; Root of Context Hiérarchy2017-01-13 15: 31: 38.602 info 62119 --- [Main] SBCETTOMCATEMEDDEDSERVletContainer: Tomcat initialisé avec le port (s): 8080 (HTTP) 2017-01-13 15: 31: 38.615 Info 62119 --- [Main] o.apache.catalina.core.standardService: service de départ tomcat2017-01-13 15: 31: 38.616 info 62119 --- [Main] org.apache.catalina.core.Standardengine: Démarrage du servlet: Apache Tomcat / 8.5.62017-01-13 15: 31: 38.718 Info 62119 - - 01-13 15: 31: 38.718 Infos 62119 - - [Ost-StartStop-1] OCCC [Tomcat]. [LocalHost]. [/]: Initialisation de Spring Embedded WebApplicationContext2017-01-13 15: 31: 38.718 Info 62119 --- [Ost-StartStop-1] OCCC [Tomcat]. [LocalHost]. 15: 31: 38.718 Info 62119 --- [Ost-StartStop-1] OSWEB.Context.ContextLoader: Root WebApplicationContext: Initialisation terminée en 1740 MS2017-01-13 15: 31: 38.927 Info 62119 --- [Ost-StartStop-1] OSBWServlet.Servlet [/] 2017-01-13 15: 31: 38.932 Info 62119 --- [OST-StartStop-1] OSBWServlet.FilterRegistrationBean: Mapping Filter: 'MetricsFilter' to: [/ *] 2017-01-13 15: 31: 38.932 infilt : Filtre de cartographie: 'caractèresCodingFilter' à: [/ *] 2017-01-13 15: 31: 38.932 Info 62119 --- [Ost-StartStop-1] OSBWServlet.FilterRegistrationBean: Mapping Filter: 'Hiddenhttpmethodfilter' to: [/ *] 2017-01-13 15: 31: 38.932. --- [ost-startStop-1] osbwservlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]2017-01-13 15:31:38.932 INFO 62119 --- [ost-startStop-1] osbwservlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]2017-01-13 15:31:38.932 INFO 62119 --- [ost-startStop-1] osbwservlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]2017-01-13 15:31:38.932 INFO 62119 --- [OST-StartStop-1] OSBWServlet.FilterRegistrationBean: Mapping Filter: 'WebRequestLoggingFilter' to: [/ *] 2017-01-13 15: 31: 38.932 info 62119 --- [OST-StartStop-1] OSBWServler. [/ *] 2017-01-13 15: 31: 39.217 Info 62119 --- [Main] swsmmarequestmappinghandleradapter: à la recherche de @Controlleradvice: org.springframework.boot.context.embedded.annotationconfigembeddedwebapplicationContex CST 2017]; Root of Context Hiérarchy2017-01-13 15: 31: 39.310 info 62119 --- [Main] swsmmarequestmappinghandlermapping: mapted "{[/]}" sur java.lang.string com.test.example.home () 2017-01-13 15: 31: 39.313 Info 62119 --- [Main] : Mappé "{[/ error]}" sur public org.springframework.http.Responseentity <java.util.map <java.lang.string, java.lang.object >> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)2017-01-13 15:31:39.313 INFO 62119 --- [ main] swsmmaRequestMappingHandlerMapping: Mapped "{[/ error], produit = [text / html]}" sur public org.springframework.web.servlet.modelandView org.springframework.boot.autoconfigure.web.basicerrorcontroller.errorhtml (javax.servlet.http.httpservletRequest, javax.servlet.http.httpservletRequest) 2017-01-13 15: 31: 39.338 Info 62119 - [Main] Oswshandler.simpleurlHandlerMapping: chemin d'url mappé [/ webjars / **] sur le gestionnaire de type [classe org.springframework.web.servlet.resource.Resourcehttprequesthandler] 2017-01-13 15: 31: 39.338 Infolappold: Mampledled: [Main] Oswshandler.Simpleurl Path URL [/ **] sur le gestionnaire de type [classe org.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-01-13 15: 31: 39.378 info 62119 --- [Main] OSWShandler.SimpleurlHandlermapping: Class Url Path [/**/favicon.ico] org.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-01-13 15: 31: 39.665 Info 62119 --- [Main] Osbaemvc.endpoinThandLermapping: mappé "{[/manage/Metrics/{name:.*. 15: 31: 39.665 Info 62119 --- [Main] Osbaemvc.endpoinThandLermapping: Mapted "{[/ Manage / Metrics || /manage/Metrics.json org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke () 2017-01-13 15: 31: 39.666 Info 62119 --- [Main] Osbaemvc.endPointhandLermapping: mapped "{[/ manappes || hendpointhLermapping: mapped" {[/ greatf / mapping || /manage/mappings.json. OSBAEMVC.ENDPOINTHANDLERMAPPY: MAPPED "{[/ manage / trace || /manage/trace.json org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke () 2017-01-13 15: 31: 39.667 Info 62119 --- [Main] Osbaemvc.endPoinThandLermapping: mapped "{[/ great / info || /Manage/info.json. OSBAEMVC.ENDPOINTHANDLERMAPPEMENT: MAPPED "{[/ manage / configProps || /manage/configprops.json org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke () 2017-01-13 15: 31: 39.669 Info 62119 --- [Main] Osbaemvc.endPoinThandLermapping: mapped "{[/ manage / heapdump || /manage/heapdump.json org.springframework.boot.actuate.endpoint.mvc.heapDumpMvcendpoint.invoke (Boolean, javax.servlet.http.httpservletRequest, javax.servlet.http.httpservletReSpense) java.io.ioexception, javax.servlet.servlet.servletException2017-01-13 15: 31: 39.669 info 62119 --- [Main] Osbaemvc.endPoinThandLermapping: cartographié "{[/ manage / autoconfig || /manage/AutoConfig.json Dosshods=[ ONGORD,Produces=_Application/json]} "sur public java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke () 2017-01-13 15: 31: 39.673 Info 62119 --- OSBAEMVC.ENDPOINTHANDLERMAPPEMENT: MAPPET "{[/manage/env/ /name:.*} org.springframework.boot.actuate.endpoint.mvc.environmentmvcendpoint.value (java.lang.string) 2017-01-13 15: 31: 39.673 Info 62119 --- [Main] OSBAEMVC.endpoinThandLermapping: Mappyd "{[/ Manage / Env || /manage/env.json OSBAEMVC.endpoinThandLermapping: Mapted "{[/ Manage / Health || /manage/Health.json Domproduces=_Application/json]}" sur le public java.lang.object org.springframework.boot.actuate.endpoint.mvc.healthmvcendpoint.invoke (java.security.principal) 2017-01-13 15: 31: 39.675 info 62119 --- [Main] OSBAEMVC.endpoinThandlermapping: mapped "{[/ great gery / duemp || /Manage/dump.json DMO OSBAEMVC.ENDPOINTHANDLERMAPPY: MAPPED "{[/ Manage / Shutdown || /manage/shutdown.json DomMethods=[Post]}" sur public java.lang.object org.springframework.boot.actuate.endpoint.mvc. 62119 --- [Main] Osbaemvc.endPoinThandLermapping: Mapted "{[/ Manage / Beans || /manage/Beans.json Lomingal,methods=_get. org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke () 2017-01-13 15: 31: 39.799 Info 62119 --- [Main] OsjeaannotationMBeanExporter: Enregistrement des haricots pour l'exposition JMX sur startup2017-01-13 15: 31: 39.809 Infose 62119 - Fin] OscSupport.DefaultlifecycleProcessor: Démarrage des haricots dans la phase 02017-01-13 15: 31: 39.944 Info 62119 --- [Main] SBCETTOMCATEMBEDDEDSERVletContainer: Tomcat démarré sur Port (S): 8080 (HTTP) 2017-01-13 15: 31: 31: 39.949 Info 62119-[principale] com.test.example: a démarré l'exemple en 4,292 secondes (JVM fonctionne pour 4.726) 3. L'application Spring Boot se ferme
Il existe deux façons principales de fermer le démarrage de Spring: l'envoi de signaux d'arrêt via HTTP ou l'utilisation de SERVICE STOP.
La condition préalable à la fermeture de l'application Spring Boot est que Pom.xml ajoute le contenu suivant:
<dependency> <proupId> org.springframework.boot </rombasid> <ArtefactId> printemp-boot-starter-actuator </retifactid> </pedidency>
Ajouté dans l'application.properties:
#Enable Shutdownendpoints.shutdown.enabled = true # Disable Vérification du mot de passe Endpoids.shutdown.Sensitive = false
La commande de clôture est:
CURL -X POST HOST: Port / Shutdown # Demo $ curl -x post http: // localhost: 8080 / shutdown {"message": "fermer, bye ..."} $ curl -x post http: // localhost: 8080 / manage / shutdown {"message": "fermer, bye ..."}Si vous souhaitez configurer le chemin d'accès, vous devez ajouter Management.Context-Path = / Manage dans Application.Properties, la commande d'arrêt devient Curl -x Post Host: Port / Manage / Shutdown.
4. Vérification de la sécurité
Si la vérification de sécurité est requise lors de la fermeture, ajoutez le fichier pom.xml:
<dependency> <proupId> org.springframework.boot </proupId> <ArtifactId> printemp-boot-starter-security </retifactid> </pedicke>
Ajouté dans l'application.properties:
#Enable Shutdown Security Verification Endpoints.Shutdown.Sensitive = True # Verify Username Security.User.Name = admin # Verify Motword Security.user.Password = admin # Role Management.Security.Role = SuperUser # Spécifiez Port Management.port = 8081 # Spécifiez Adresse Management.Address = 127.0.0.1
La commande de clôture est:
CURL -U ADMIN: Admin -x post http://127.0.0.1:8081/manage/shutdown# Demo $ curl -u admin: admin -x post http://127.0.0.1:8081/manage/shutdown ="Message":"shuting down, bye ... "}
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.