spring-boot-starter-web的引用依赖情况如下:
从图中可以看出spring-boot-starter-web已经引入spring-mvc和内嵌的tomcat,基本的使用并不难,这部分主要在于看源码。源码阅读后面另起随笔。
其余基本的使用要点为:
1.静态资源映射路径,从WebMvcAutoConfiguration源码中可得,首先支持webjars的引入方式(比如jquery的webjar),除此之外,静态资源映射路径读取WebMvcProperties.staticPathPattern,默认为/**;另外支持扫描 "classpath:/META-INF/resources/","classpath:/resources/", "classpath:/static/", "classpath:/public/"
2.支持ResourceProperties对于资源的统一配置
3.静态资源下的index.html被识别成欢迎页,被/**映射
4.**/favicon.ico都是在静态资源下找的
5.支持模板引擎JSP、Thymeleaf、Velocity、Freemarker,但是都需要引入对应的starter包(包括JSP,也并非默认就支持,需要引入包)
6.可以通过实现WebMvcConfigurerAdapter来拓展Spring-MVC的配置。标注@EnableWebMvc时表示全面接管自动配置,不标注时只是拓展
7.Spring自动配置中很多地方都采用了@Configuration的拓展标签,在用户自定义组件不存在时才启用自动配置对应的组件来配置,这块需要多关注于源码;另外,大部分组件提供了xxxConfigurer来帮忙进行拓展配置,xxxCustomizer帮助进行定制配置
8.国际化,使用ResourceBundleMessageSource管理国际化资源文件,在页面使用fmt:message取国际化内容。本地可以通过自己注册LocalResolver组件完成自定义的国际化规则。
9.本地依旧可以通过实现HandlerInterceptor注册自己的拦截器。不过需要注册自定义拦截器(通常是通过注册一个WebMvcConfigurerAdapter组件来完成注册)
10.默认用ErrorMvcAutoConfiguration注册错误处理器
11.对外提供ServerProperties来做一些属性的配置容器
12.因为内嵌了tomcat包,所以默认就支持做Servlet的注册
13.嵌入式的Servlet容器应该打成jar,便捷简单但是默认不支持JSP
14.使用外置Servlet时,应该选定打war包,手动引入tomcat依赖,另外需要实现SpringBootServletInitializer