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"); } }