1. Personalización de arranque de primavera y optimización de contenedores Tomcat incorporados.
> Hay tres contenedores incorporados, a saber, Questo, Jetty, Tomcat y Spring Boot. Estos tres contenedores se implementan por separado. Las interfaces superiores son todas incrustadas de servicio de fábrica, que también es el núcleo principal de este artículo.
Hay dos formas principales de personalizar y optimizar los contenedores incorporados. La primera forma es configurarlos a través de archivos de configuración, y la otra forma es codificar el código. A continuación, las dos formas anteriores se implementan principalmente.
2. Personalizar y optimizar TomCat a través de archivos de configuración
> Para obtener el contenido central de la configuración, consulte la Org.SpringFramework.Boot.autoconfigure.web.ServerProperties Atribute de atributo de atributos. Lo siguiente muestra alguna configuración de Tomcat
Servidor: Puerto: 8081 # Tomcat Set Tomcat: AccessLog: # Habilitar el registro Acceso habilitado: Verdadero # REGISTRO Directorio de ruta de guardado: E:/TMP/Logs
Para obtener más contenido de configuración, consulte las propiedades incorporadas de la clase org.springframework.boot.autoconfigure.web.serverproperties.
3. Implemente la configuración y optimización de contenedores incorporados a través del código de código
> Hay dos formas de mostrar la optimización y personalización de contenedores incorporados utilizando el código. El primero es implementar el personalizador de contenedores de servlet incorporado (org.springframework.boot.context.embedded.EmbedDedServletContainerCustomizer) y entregar la gestión de la clase a la gestión de contenedores de resorte. El otro es configurar la clase de implementación de interfaz InceddedServletContainerFactory en el contenedor Spring. Aquí nos dirigimos principalmente al Tomcat incorporado, es decir, TomCatembeddedServletContainerFactory Clase
3.1. El primer método es implementar la interfaz InceddedServletContainerCustomizer y entregarla a Spring Container Management
@ComponentPublic Class myEmbedDedServletContainerCustomizer implementa incrustarse en contenedor de incrustación decontainerContainerConTomizer {@Override public que el valor predeterminado es Tomcat Container System.out.println (Container.getClass ()); TomCatembedDedServletContainerFactory fábrica = (TomCatembedDedServletContainerFactory) contenedor; // establecer Port factory.setport (8088); // establecer Tomcat Root Directory Factory.SetBaseDirectory (nuevo archivo ("d:/tmp/tomcat")); // Establecer el directorio de almacenamiento de registro de acceso fábrica.addContextValves (getLogAccessLogValue ()); // Establecer hilos y conexiones de Tomcat fábrica.addconnectorCustomizers (nuevo mytomcatconnectorCustomizer ()); // Inicializar el objeto ServletContext fábrica.Addinitializers ((ServletContext) -> {System.out.println ("= = = = = get Information del servidor = =" + ServletContext.getServerInfo ());}); } Private AccessLogValve getLogaccessLogValue () {AccessLogValve AccessLogValve = new AccessLogValve (); AccessLogValve.SetDirectory ("d:/tmp/tomcat/logs"); AccessLogValve.SetEnabled (verdadero); AccessLogValve.SetPattern (constants.accesslog.common_pattern); AccessLogValve.SetPrefix ("SpringBoot-Access-Log"); AccessLogValve.SetSuffix (". Txt"); devolver AccessLogValve; }}/*** Personalice el número de conexiones y hilos de Tomcat*/class mytomCatConnectorCustomizer implementa TomCatConnectorCustomizer {@Override public void personalize (conector conector) {// protocolo de conexión http/1.1 sistema.out.println (conector.getPoTocol ()); // Procesador de protocolo de conexión org.apache.coyote.http11.http11nioprotocol System.out.println (conector.getprotocolhandler (). GetClass ()); // http11nioprotocol http11nioprotocol ProtocolHandler = (http11nioprotocol) conector.getProtocolHandler (); // Establecer el número máximo de conexiones Protocolhandler.SetMaxConnections (2000); // Establecer el número máximo de hilos Protocolhandler.SetMaxThreads (500); }}3.1. Configurar la clase de implementación InceddedServletContainerFactory en el contenedor Spring
@SpringBootConfigurationPublic Class WebSerVerConfiguration {@Bean Public InBreddedServletContainerFactory IncredDedServletContainerFactory () {TomCatembedDedServletContainerFactory Factory = new TomCatEmbedDedServletContainerFactory ();; // establecer Port factory.setport (8089); // establecer 404 Interfaz de error fábrica.adderrorpages (nueva ErrorPage (httpstatus.not_found, "/404.html")); // Establezca fábrica.addinitializers ((servletContext) -> {system.out.println ("= = = = = get Information de servidor = =" + ServletContext.getServerInfo ());}); // Establezca el número máximo de conexiones y el número máximo de hilos de fábrica.AddConnectorCustomizers ((conector) -> {http11nioProtocol ProtocolHandler = (http11nioProtocol) conector.getProtocolHandler (); Protocolhandler.setMaxConnections (2000); ProtocolhandlerTerMaxmaxm (500) (500) (500) (500); }); // Establecer el directorio donde se accede al archivo de registro factory.addContextValves (getLogaccessLogValue ()); Return Factory; } Private AccessLogValve getLogaccessLogValue () {AccessLogValve AccessLogValve = new AccessLogValve (); AccessLogValve.SetDirectory ("d:/tmp/logs"); AccessLogValve.SetEnabled (verdadero); AccessLogValve.SetPattern (constants.accesslog.common_pattern); AccessLogValve.SetPrefix ("SpringBoot-Access-Log"); AccessLogValve.SetSuffix (". Txt"); devolver AccessLogValve; }}4. Resumen
Lo anterior es una explicación detallada de los ejemplos de contenedores Tomcat incorporados de personalización y optimización de arranque de resorte que se le presentó. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!