SpringBoot 静态资源导入,首页控制,扩展SpringMVC

536 阅读2分钟

静态资源导入

  • 不懂就看文档,(2.1.5版的中文)

  • 默认情况下,Spring Boot 将在 classpath 或者 ServletContext 根目录下从名为 /static/public、/resources 或 /META-INF/resources)目录中服务静态内容。它使用了 Spring MVC 的 ResourceHttpRequestHandler,因此您可以通过添加自己的 WebMvcConfigurerAdapter 并重写 addResourceHandlers 方法来修改此行为。

image.png

  • 默认情况下,资源被映射到 /,但可以通过 spring.mvc.static-path-pattern 属性调整。比如,将所有资源重定位到 /resources/
spring.mvc.static-path-pattern=/resources/**
  • 您还可以使用 spring.resources.static-locations 属性来自定义静态资源的位置(使用一个目录位置列表替换默认值)。根 Servlet context path / 自动作为一个 location 添加进来。

首页(欢迎页面)

  • Spring Boot 支持静态和模板化(template)的欢迎页面。它首先在配置的静态内容位置(static、/public、/resources )中查找 index.html 文件。如果找不到,则查找 index 模板。如果找到其中任何一个,它将自动用作应用程序的欢迎页面。

模板引擎

  • 可以使用 Spring MVC 来服务动态 HTML 内容。Spring MVC 支持多种模板技术,包括 Thymeleaf、FreeMarker 和 JSP。当然,许多其他模板引擎也有自己的 Spring MVC 集成。

扩展SpringMVC

  • 如果您想保留 Spring Boot MVC 的功能,并且需要添加其他 MVC 配置(interceptor、formatter视图控制器等),可以添加自己的 WebMvcConfigurerAdapter 类型的 @Configuration 类,但不能带@EnableWebMvc 注解。如果您想自定义 RequestMappingHandlerMapping、RequestMappingHandlerAdapter 或者 ExceptionHandlerExceptionResolver 实例,可以声明一个 WebMvcRegistrationsAdapter 实例来提供这些组件。

  • 如果您想完全掌控 Spring MVC,可以添加自定义注解了 @EnableWebMvc@Configuration 配置类。

  • 样例

@Configuration
public class Myconfig implements WebMvcConfigurer {
    //ViewResolver实现了视图解析器接口的类,我们就可以把它看做视图解析器
    @Bean
    public ViewResolver myViewResolver() {
        return new MyViewResolver();
    }

    //自定义了一个自己的视图解析器MyViewResolver
    public static class MyViewResolver implements ViewResolver {
        @Override
        public View resolveViewName(String viewName, Locale locale) throws Exception {
            return null;
        }
    }
}

自定义starter,就是@Configuration+@Conditionalxxx+@xxxProperties