Java Spring Boot:如何将我的应用程序根(“/”)映射到index.html?

我是Java和Spring的新手。 我如何映射我的应用程序根http://localhost:8080/到一个静态的index.html ? 如果我导航到http://localhost:8080/index.html其工作正常。

我的应用程序结构是:

迪尔斯

我的config\WebConfig.java看起来像这样:

 @Configuration @EnableWebMvc @ComponentScan public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations("/"); } } 

我试图添加registry.addResourceHandler("/").addResourceLocations("/index.html"); 但是失败了。

如果您没有使用@EnableWebMvc注释,那么它就会开箱即用。 当你这样做的时候,你closures了Spring Boot在WebMvcAutoConfiguration中为你做的所有事情。 您可以删除该注释,也可以添加closures的视图控制器:

 @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("forward:/index.html"); } 

Dave Syer的答案的一个例子是:

 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration public class MyWebMvcConfig { @Bean public WebMvcConfigurerAdapter forwardToIndex() { return new WebMvcConfigurerAdapter() { @Override public void addViewControllers(ViewControllerRegistry registry) { // forward requests to /admin and /user to their index.html registry.addViewController("/admin").setViewName( "forward:/admin/index.html"); registry.addViewController("/user").setViewName( "forward:/user/index.html"); } }; } } 

如果它是一个春季启动应用程序。

Spring Boot自动检测public / static / webapp文件夹中的index.html。 如果你已经写了任何控制器@Requestmapping("/") ,它将覆盖默认function,它不会显示index.html除非你inputlocalhost:8080/index.html

 @Configuration @EnableWebMvc public class WebAppConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addRedirectViewController("/", "index.html"); } }