tutorial starter start mvc example application java spring spring-boot

java - starter - Falta TomcatEmbeddedServletContainerFactory en Spring Boot 2



spring boot wikipedia (2)

En Spring boot 2.0.0.RELEASE puede reemplazar con el siguiente código:

@Bean public ServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() { @Override protected void postProcessContext(Context context) { SecurityConstraint securityConstraint = new SecurityConstraint(); securityConstraint.setUserConstraint("CONFIDENTIAL"); SecurityCollection collection = new SecurityCollection(); collection.addPattern("/*"); securityConstraint.addCollection(collection); context.addConstraint(securityConstraint); } }; tomcat.addAdditionalTomcatConnectors(redirectConnector()); return tomcat; } private Connector redirectConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(8080); connector.setSecure(false); connector.setRedirectPort(8443); return connector; }

Tengo la aplicación Spring Boot versión 1.5.x, que utiliza org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory , estoy intentando org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory a Spring Boot 2, pero la aplicación no se compila, aunque tengo una dependencia a org.springframework.boot:spring-boot-starter-tomcat . El compilador emite el siguiente error:

error: package org.springframework.boot.context.embedded.tomcat


La clase ha sido eliminada y reemplazada por org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory Para obtener más información, consulte: 2.0.0.RELEASE , que dice:

Para admitir casos de uso reactivos, la estructura del paquete de contenedores incrustados se ha rediseñado bastante. EmbeddedServletContainer ha sido renombrado a WebServer y el paquete org.springframework.boot.context.embedded se ha reubicado en org.springframework.boot.web.server. En consecuencia, EmbeddedServletContainerCustomizer ha cambiado su nombre a WebServerFactoryCustomizer.

Por ejemplo, si estaba personalizando el contenedor Tomcat incorporado utilizando la interfaz de devolución de llamada TomcatEmbeddedServletContainerFactory, ahora debería usar TomcatServletWebServerFactory y si estaba usando un bean EmbeddedServletContainerCustomizer, ahora debería usar un bean WebServerFactoryCustomizer.

Tuve el problema de que necesitaba enviar una solicitud más grande, entonces el tamaño predeterminado permitido:

@Bean public TomcatServletWebServerFactory containerFactory() { return new TomcatServletWebServerFactory() { protected void customizeConnector(Connector connector) { int maxSize = 50000000; super.customizeConnector(connector); connector.setMaxPostSize(maxSize); connector.setMaxSavePostSize(maxSize); if (connector.getProtocolHandler() instanceof AbstractHttp11Protocol) { ((AbstractHttp11Protocol <?>) connector.getProtocolHandler()).setMaxSwallowSize(maxSize); logger.info("Set MaxSwallowSize "+ maxSize); } } }; }