Spring Boot, como el producto de las mejores prácticas del marco de primavera para el concepto de "Convención sobre Configuración", puede ayudarnos a crear rápidamente aplicaciones independientes basadas en el marco de primavera a nivel de producto. La mayoría de las aplicaciones de arranque de primavera requieren muy poca configuración para ejecutarse rápidamente. Es un micro-framework que es bastante consistente con los microservicios.
1. Paquete de aplicación de arranque de primavera
La aplicación de arranque de primavera se puede escribir en un paquete JAR, con Tomcat incrustado en él, por lo que se puede iniciar directamente. Sin embargo, antes de que se inicie la aplicación Spring Boot, el empaque es primero necesario. Este artículo habla sobre el embalaje del proyecto Maven. Los requisitos previos requeridos para el embalaje (el contenido en el archivo pom.xml) son:
... <Apbaging> jar </packaging> ... <Spendency> <MoupRoD> org.springframework.boot </proupid> <artifactid> spring-boot-starter-web </artifactid> </spendency> ... <100 build> <glugins> <grupo> org.springframeWork.Boot </sproupid> <artifactid> <Configuration> <MainClass> Com. ***. Application </ MainClass> </figuration> <cacuncisions> <secution> <SoTeS> <SOTTER> Repackage </etal> </metas> </secution> </ecursions> </glugin> </glugins> </struct> ... ...
El comando del paquete es:
paquete mvn limpio -dmaven.test.skip = true# demo $ mvn paquete limpio -dmaven.test.skip = true [info] escaneo para proyectos ... [advertencia] [advertencia] Se encontraron algunos problemas mientras construyen el modelo efectivo para com.example: myProject: jar: 0.0.1 -snapshot [advertencia] build.plugs.pplugs.pluginsion 'para para. org.springframework.Boot: falta el boot-maven-plugin. @ Line 38, Columna 17 [Advertencia] [Advertencia] Se recomienda solucionar estos problemas porque amenazan la estabilidad de su edificio. [ADVERTENCIA] [ADVERTENCIA] Por esta razón, las futuras versiones de Maven ya no respaldan la construcción de tales proyectos malformados. [Advertencia] [Información] [Información] ------------------------------------------------------------------------------------------------------------------------------------------------------- 0.0.1-snapshot [información] ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- ¡En realidad) para copiar recursos filtrados, es decir, la compilación depende de la plataforma! [Info] copiando 1 recurso [info] [info] --- maven-compiler-plugin: 3.1: compilar (compile predeterminado) @ myproject --- [info] cambios detectados-¡Recomiendo el módulo! /Usuarios/LTC/Spring Boot Demo/Target/Classes [info] [info] --- maven-recursces-plugin: 2.6: testresources (predeterminado-testreSources) @ myproject --- [info] no copiar recursos de prueba [info] [info] ---- Maven-Compiler-Plugin: 3.1: TestCompile (T-Testcompile) @ myProject----no compilador de testamento: no. fuentes [info] [info] --- Maven-Surefire-Plugin: 2.12.4: Test (Test-Test) @ myProject --- [Info] Las pruebas se omiten. [Info] [Info] --- Maven-Jar-Plugin: 2.4: jar (default-jar) @ myproject --- [Info] construyendo jar:/usuarios/ltc/boot spring boot Demostración/target/myproject-0.0.1-snapshot.jar [info] [info] --- spring-boot-maven-plugin: 1.5.0.rc1: reempackage (predeterminado) @ myproject --- [info] --------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
O ejecutar ejecutar -> build maven ... en eclipse, complete el paquete limpio -dmaven.test.skip = true en objetivos, ejecución, paquete se completa.
2. Inicio de la aplicación de arranque de primavera
El comando de inicio del arranque de primavera es:
Java -jar Application.Jar# demo $ java -jar Target/myProject -0.0.1 -snapshot.jar. ____ __ _ /// ___'_ __ _ _ (_) _ __ __ _ / / / (() / ___ | '_ |' _ | / / `| / / / / / / / / / / / / / / | | | | | | | | | | | | | (_ | |)))) '____ | .__ | | _ | | _ | | ============================================= ___/=/_/_/:: Spring Boot :: (v1.4.3.3 (/Usuarios/ltc/spring boot demos/target/myproject-0.0.1-snapshot.jar iniciado por liutiAnchi in/users/ltc/spring demoso de arranque) 2017-01-13 15: 31: 36.916 info 62119 ---- [main] com.test.example: no se establece un perfil activo, cayendo hacia atrás a los perfiles predeterminados: predeterminado 2017-01-13 15: 31: 31. 62119 --- [Main] ationConfigembeddedwebapplicationContext: Refreshing org.springframework.boot.context.embedded.annotationConfigembeddedwebapplicationContext@b1a58a3: Fecha de inicio [FRI 13 de enero 15:31:36 CST 2017]; Root of Context Jerarchy2017-01-13 15: 31: 38.602 Información 62119 --- [Main] SbcettomCatembeddedServletContainer: Tomcat inicializado con puerto (s): 8080 (HTTP) 2017-01-13 15: 31: 38.615 Información 62119 --- [principal] o.apache.catalina.core.StandardService : Starting service Tomcat2017-01-13 15:31:38.616 INFO 62119 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.62017-01-13 15:31:38.718 INFO 62119 --- [OST-STARTSTOP-1] OCCC [TOMCAT]. [Localhost]. [/]: Inicialización de la aplicación web incrustada SpringContext2017-01-13 15: 31: 38.718 Información 62119 --- [OST-STARTSTOP-1] OCCC [TOMCAT]. [LOCALHOST]. [/] 15: 31: 38.718 INFO 62119 --- [OST-STARTSTOP-1] OSWEB.Context.ContextLoader: Root WebApplicationContext: Inicialización completada en 1740 MS2017-01-13 15: 31: 38.927 Info 62119 --- [OSTSTARTSTOP-1] OSBWServlet.servletegationBeMPLATION: MAPITARILLO: MAPITADO: MAPITADO: MAPITADO: MAPITADO: MAPITADO: MAPITADO: MAPITADOR 'DispatcherServlet' a [/] 2017-01-13 15: 31: 38.932 INFO 62119 --- [OST-STARTSTOP-1] OSBWServlet.FilterRegistrationBean: Filtro de asignación: 'Metricsfilter' a: [/*] 2017-01-13 15: 31: 38.932 Información 62119 ---- [OsTARTSTATART-STARTSTOP-1] OSBWServlet.FilterRegistrationBean: Filtro de mapeo: 'caracterSencodingFilter' a: [/*] 2017-01-13 15: 31: 38.932 INFO 62119 --- [OST-STARTSTOP-1] OSBWServlet.FilterRegistrationBean: Filtro de mapeo: 'HiddenhttpMethodfilter' 15: 31: 38.932 INFO 62119 --- [OST-STARTSTOP-1] OSBWServlet.FilterRegistrationBean: Filtro de mapeo: 'Hiddenhttpmethodfilter' a: [/*] 2017-01-13 15: 31: 38.932 Info 62119 --- Filtro de mapeo: 'httpputformContentFilter' a: [/*] 2017-01-13 15: 31: 38.932 Info 62119 --- [OST-STARTSTOP-1] OSBWServlet.FilterRegistrationBean: Filtro de asignación: 'requestContextFilter' para: [/*] 2017-01-13 15: 31: 38.932191191191919 --- [OST-STARTSTOP-1] OSBWServlet.FilterRegistrationBean: Filtro de asignación: 'WebRequestLoggingFilter' a: [/*] 2017-01-13 15: 31: 38.932 INFO 62119 --- [OSTSTOP-1] OSBWServlet.FilterRegistrationBean: Mapeador: Mapeo: 'Aplicación:' APLEZA CCONTONTEXTERT::: [/*] 2017-01-13 15: 31: 39.217 Información 62119 --- [principal] SWSMMAREQUESTMappingHandlerAdapter: Buscando @ControllerAdvice: org.springframework.boot.context.embedded.annotationConfigEmbedDeBappApplicationContex 15:31:36 CST 2017]; Raíz del contexto Jerarquía2017-01-13 15: 31: 39.310 Información 62119 --- [Main] SWSMMAREQUESTMAPPingHandLermapping: mapeado "{[/]}" en java.lang.string com.test.example.home () 2017-01-13 15: 39.313 info 62119 ---- [principal] : Asignado "{[/error]}" en público 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 --- [principal] swsmmmmmmmemequestmappinghandlerping: mapeado "{[[/error], produce = [text/html]}" en público org.springframework.web.servlet.modelandview org. OSWSHANDLER.SimpleUrlHandlermapping: ruta de URL asignada [/webjars/**] en el controlador de tipo [clase org.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-01-13 15: 31: 39.338 info 62119--[main] Oswshandler.simating Ruta de la URL mapeada [/**] en el controlador de tipo [clase org.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-01-13 15: 31: 39.378 info 62119 --- [principal] Oswshandler.Simpleurlhandlermapped: mapeado Tipo [clase org.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-01-13 15: 31: 39.665 info 62119 --- [principal] osbaemvc.endpointhandlermapping: mapeado "{[//manage/metrics/{name:.*hfont>,methods= sorgetfont>,produces=ancePapplication/json]}" en público java.lang.object org.springframework.boot.actuate.endpoint.mvc.metricsmvcendpoint.value (java.lang.string) 2017-13 15: 39.19: 39.69: 39. Información 62119 --- [Main] Osbaemvc.endpointhandLermapping: Mapped "{[/gestionar/Metrics || /manage/metrics.jsonfont>,methods= sorgetfont>,produces=+application/json]}" en el público java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke () 2017-01-13 15: 31: 39.666 Información 62119 --- [Main] Osbaemvc.endpointhandlermapping: mapeado "{[Manage/Mappes || /manage/mappings.jsonfont>, methods=gegetfont> ,produces=+Application/json]} "en público java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke () 2017-01-13 15: 39.667 info 62119--[principales] OSBAEMVC.ENDPOINTHANDLERMAPPing: MAPPED "{[/manage/trace || /manage/trace.jsonfont> ,methods= sorgetfont>,productes=imaPapplication/json]}" en el público java.lang.object org.springfframwork.boot.actuate.endpoint.mvc.endpointmvcadapter.inVOKE () 15: 31: 39.667 INFO 62119 --- [Main] Osbaemvc.endpointhandLermapping: mapeado "{[/gestionar/info || /manage/info.jsonfont> methods= escargados org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke () 2017-01-13 15: 31: 39.668 info 62119 --- [main] osbaemvc.endpointhandlermapping: mapeado "{[gestionar/configurarprops || /Manage/ConfigProps.jsonfont>, Methods=tilfontados, Produces=+Application/json]} "en público java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.inhous osbaemvc.endpointhandLermapping: mapeado "{[/gestionar/heapdump || /manage/heapdump.jsonfontado,methods= escar a org.springframework.boot.actuate.endpoint.mvc.heapdumpmvcendpoint.invoke (boolean, javax.servlet.http.httpservletrequest, javax.servlet.http.httpservletResponse) lanza java.io.ioexception, javax.servlet.servlet.servletexception2017-01-13 15: 31: 39.669 info 62119 --- [main] osbaemvc.endpointhandlermapping: mapeado "{[/administrar/autoconfig || /manage/autoconfig.jsonfont>,methods=tilfontados ,produces=+Application/json]} "en público java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke () 2017-13 15: 39.673 info12119--[Main] [Main] [Main] [Main] [principal] osbaemvc.endpointhandlermapping: mapped "{[/manage/env/{name:.*}font> Methods=tileNegetfont>,Produces=anceApplication/json]}" en el público java.lang.object org.springframework.boot.actuate.endpoint.mvc.environmentmvcendpoint.value (java.lang.string) 2017-01-13 15: 31: 39.673 Información 62119 --- [Main] Osbaemvc.endpointhandLomappappappape: mapeado "{/gestion /Manage/env.jsonfont>, Methods=tilfont>,produces=+Application/json]} "en público java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke () 2017-01-13 15: 39.674 info 62119--[principales] OSBAEMVC.ENDPOINTHANDLERMAPPing: MAPPED "{[/gestionar/salud || /manage/health.jsonfont>,produce=+application/json]}" en el público java.lang.object org.springframework.boot.actuate.endpoint.mvc.healthmvcendpoint.invoke (java.security.principal) 2017-01-13 15: 31: 39.675 información 62119 --- [principal] Osbaemvc.endpointhandLermappappappapping: mapeado "{/gestionar/dump || /manage/dump.jsonfont>, methods=ilegetfont>,produces=anceApplication/json]} "en el público java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke () 2017-01-13 15: 39.677 info 62119--[principales] osbaemvc.EndpointHandlerMapping : Mapped "{[/manage/shutdown || /manage/shutdown.json],methods=[POST]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.ShutdownMvcEndpoint.invoke()2017-01-13 15:31:39.678 INFO 62119 --- [Main] Osbaemvc.endPointhandLermapping: mapeado "{[/gestionar/frijoles || /manage/beanss.jsonfont>,methods= claggetfontados,produces= claplication/json]}" en el público java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke () 2017-01-13 15: 31: 39.799 Info 62119 --- [principal] OsjeaannotationmBeanExporter: registrando frijoles para la exposición de JMX en Startup2017-01-13 15: 39.809909 Info 62119---------- OSCSupport.defaultLifeCycleProcessor: Beans de inicio en la fase 02017-01-13 15: 31: 39.944 INFORMACIÓN 62119 --- [Main] SbcettomCatembeddedservletContainer: Tomcat comenzó en el puerto (s): 8080 (HTTP) 2017-01-13 15: 39.9499999------8080 (HTTP) 2017-01-13 15: 31.949999911 com.test.example: Ejemplo iniciado en 4.292 segundos (JVM en ejecución para 4.726) 3. Cierra la aplicación de arranque de primavera
Hay dos formas principales de cerrar el arranque de primavera: enviar señales de apagado a través de HTTP o usar Service Stop.
El requisito previo para cerrar la aplicación Spring Boot es que Pom.xml agrega el siguiente contenido:
<Spendency> <MoupRoMID> org.springframework.boot </groupid> <artifactId> spring-boot-starter-actuator </artifactid> </dependency>
Agregado en la aplicación.properties:
#Enable shutdownEndpoints.shutdown.enabled = true#Disable VERIFICACIÓN DE PASSAWNS.SHUTDOWN.Sensitive = FALSE
El comando de cierre es:
Curl -x Post Host: Port/Shutdown# Demo $ Curl -x Post http: // localhost: 8080/shutdown {"mensaje": "apagado, adiós ..."} $ curl -x post http: // localhost: 8080/manaySi desea configurar la ruta, debe agregar administración.context -path =/administrar en Application.Properties, el comando de apagado se convierte en curl -x post host: puerto/manager/shutdown.
4. Verificación de seguridad
Si se requiere verificación de seguridad al cerrar, agregue el archivo pom.xml:
<Spendency> <MoupRoMID> org.springframework.boot </groupid> <artifactId> spring-boot-starter-security </artifactid> </dependency>
Agregado en la aplicación.properties:
#Enable apagado verificación de seguridad endpoints.shutdown.sensitive = true#Verify UserName Security.user.name = admin#verificar la contraseña Seguridad.user.password = admin#gestión de rol
El comando de cierre es:
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":"shutting Down, bye ... ""}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.