SpringBoot2.x入门到项目实战课程系列(第五章)
项目源码:
第5章 Spring Boot 的Web开发
- Web 开发是项目实战中至关重要的一部分 , Web开发的核心内容主要包括嵌入的 Servlet 容器和SpringMVC
- Web开发官方文档:
- #boot-features-spring-mvc
- Spring Boot 为 Web 开发提供了 spring-boot-starter-web 启动器作为基本支持 , 为我们提供了嵌入的Tomcat 以及 Spring MVC 的依赖支持 。 (参考:pom.xml)
- 也提供了很多不同场景的自动配置类 , 让我们只需要在配置文件中指定少量的配置即可启动项目 。 自动配置类存储在 spring-boot-autoconfigure.jar 的 org.springframework.boot.autoconfigure 包下 。
文章插图
- 思考自动配置原理: 自动配置场景 SpringBoot 帮我们配置了什么?是否修改?能修改哪些配置?是否可以扩展?……
- 自动配置类举例:
- 文件名可以看出
- xxxxAutoConfiguration :向容器中添加自动配置组件
- xxxxProperties :使用自动配置类 来封装 配置文件的内容
- SpringMVC配置 : WebMvcAutoConfiguration 和 WebMvcProperties
文章插图
- 内嵌 Servlet 容器 : ServletWebServerFactoryAutoConfiguration 和 ServerProperties
文章插图
- 上传文件的属性 :MultipartAutoConfiguration 和 MultipartProperties
文章插图
- JDBC : DataSourceAutoConfiguration 和 DataSourceProperties
文章插图
5.2 静态资源的映射规则
- 对静态资源的映射规则 ,可通过分析 WebMvcAutoConfiguration 自动配置类得到
- 在 WebMvcAuotConfiguration.addResourceHandlers() 分析webjars 资源映射
public void addResourceHandlers(ResourceHandlerRegistry registry) { if (!this.resourceProperties.isAddMappings()) {logger.debug("Default resource handling disabled"); } else {Duration cachePeriod = this.resourceProperties.getCache().getPeriod();CacheControl cacheControl = this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl(); if (!registry.hasMappingForPattern("/webjars/**")) {//收到 /webjars/**请求后, 会去classpath:/META-INF/resources/webjars/ 查找资源文件this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[]{"/webjars/**"}).addResourceLocations(new String[]{"classpath:/METAINF/resources/webjars/"}).setCachePeriod(this.getSeconds(cachePeriod)).setCacheControl(cacheControl)); } String staticPathPattern = this.mvcProperties.getStaticPathPattern(); if (!registry.hasMappingForPattern(staticPathPattern)) {this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[{staticPathPattern}).addResourceLocations(getResourceLocations(this.resourceProperties.getStaticLocations())).setCachePeriod(this.getSeconds(cachePeriod)).setCacheControl(cacheControl)); }}
- 固态硬盘入门手册,一看就精通的电脑硬件教程
- SpringBoot2.x入门到项目实战课程系列(第二章)
- 「精选」网易严选质量数仓建设(二)—质量数仓项目建设及管理
- 「OpenCV入门教程」线性滤波方框滤波、均值滤波与高斯滤波
- Go 实战项目推荐:Gin 实现的工单系统
- Python爬虫入门第一课:如何解析网页
- 更新了!深入浅出图解Git,入门到精通(保姆级教程)第三篇
- 宁夏举办第35届青少年科技创新大赛机器人竞赛项目
- 入门到老手全覆盖,锐龙CPU给3D创作加速
- 昔日i7沦为i3,英特尔十代i3或成入门游戏CPU最优选