starter initializr bootstrap actuator spring tomcat7 spring-boot

initializr - Cambio de la página de bienvenida predeterminada para la aplicación Spring-Boot desplegada como una guerra



spring io (4)

Bueno, pasaron algunos años desde la última respuesta, y el código evoluciona.

Esto no funcionará en Spring 5 / Java 8+, debe implementar la interfaz y anular el método predeterminado.

import org.springframework.core.Ordered; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class DefaultViewConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("/homepage.html"); registry.setOrder(Ordered.HIGHEST_PRECEDENCE); } }

Estaba intentando encontrar una manera de cambiar la página de bienvenida predeterminada para una aplicación Spring-boot que se está implementando como una guerra en producción, pero no puedo encontrar una manera de hacerlo sin un archivo web.xml.

De acuerdo con la documentación, podemos hacerlo utilizando el EmbeddedServletContainerFactory con este código:

@Bean public EmbeddedServletContainerFactory servletContainer() { TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); TomcatContextCustomizer contextCustomizer = new TomcatContextCustomizer() { @Override public void customize(Context context) { context.addWelcomeFile("/<new welcome file>"); } }; factory.addContextCustomizers(contextCustomizer); return factory; }

Aunque, como estamos creando un archivo de guerra y desplegándolo en Tomcat y no utilizando el Tomcat incorporado, esto no está haciendo nada.

¿Alguna idea? Si realmente necesitamos agregar un archivo web.xml, ¿cómo podemos hacerlo y seguir usando Spring Boot? ¿Deberíamos especificar el bean de aplicación (con el método principal) como el contexto de la aplicación para DispatcherServlet? La documentación no es muy clara al respecto.

Los contenedores de Servlet más antiguos no tienen soporte para el proceso de arranque de ServletContextInitializer utilizado en Servlet 3.0. Aún puede usar Spring y Spring Boot en estos contenedores, pero tendrá que agregar un web.xml a su aplicación y configurarlo para cargar un ApplicationContext a través de DispatcherServlet.

¡Gracias por adelantado!

Pedro


Lo estoy haciendo de la siguiente manera.

package org.gwtproject.tutorial.configuration; import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; /** * Configure the welcome page * */ @Configuration public class SpringBootWelcomePageConfiguration extends WebMvcConfigurerAdapter implements WebMvcConfigurer { /** * redirect a user to the welcome page when he visits tha app without a * destination url. */ @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("forward:/ForExampleAGwtEntrypoint.html"); registry.setOrder(Ordered.HIGHEST_PRECEDENCE); super.addViewControllers(registry); } }


No es demasiado difícil de hacer ... solo necesitas reenviar la asignación predeterminada ...

@Configuration public class DefaultView extends WebMvcConfigurerAdapter{ @Override public void addViewControllers( ViewControllerRegistry registry ) { registry.addViewController( "/" ).setViewName( "forward:/yourpage.html" ); registry.setOrder( Ordered.HIGHEST_PRECEDENCE ); super.addViewControllers( registry ); } }


Siguiendo el tutorial de Michael , solo index.gsp a mi archivo index.gsp .

@Controller class Routes { @RequestMapping({ "/", "/bikes", "/milages", "/gallery", "/tracks", "/tracks/{id://w+}", "/location", "/about" }) public String index() { return "forward:/index.gsp"; } }