springBoot静态资源配置及其原理

简介: springBoot静态资源配置及其原理

SpringMVC自动配置



官网给出 :大多场景我们都无需自定义配置


给出了很多的默认的Spring资源 : Beans 、 静态资源 、 自动注册等等


如果我们想要自己配置来添加更多的:


不用@EnableWebMvc注解。使用 @Configuration + WebMvcConfigurer 自定义规则


简单功能分析



1.静态资源默认在: ****called /static (or /public or /resources or /META-INF/resources

访问 : 当前项目根路径/ + 静态资源名


2.原理:静态映射 /**


请求进来,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应404页面


3.静态资源添加前缀


在配置文件application.yaml添加前缀


spring:
  mvc:
    static-path-pattern: /res/**   
# 上面的作用就是 res下面的所有请求都是静态请求
 # 然后,我们当前项目访问静态资源就是 : 当前项目名 + 静态项目前缀 + 静态资源名
resources:
  static-location: [classpath:/XXX/]  
# 将所有的静态资源都放在resources下的XXX文件夹下


欢迎页index


也就是默认根路径


  • 可以配置静态资源路径(static/index.html)
  • 但是不可以配置静态资源的访问前缀。否则导致 index.html不能被默认访问


因为底层这个是被写死的,没办法修改


自定义网站访问的图标

类似这样:


名字为: favicon.ico 的 放在静态资源目录下即可。


静态资源配置原理


1.SpringBoot启动 默认加载 XXXAutoConfiguration类 ,也就是默认配置类

2.而SpringMVC的默认自动配置类为 : WebMvcAutoConfiguration 配置类

自动配置生效
@Configuration(proxyBeanMethods = false)
@ConditionalOnWebApplication(type = Type.SERVLET)
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class })
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class) 
//如果实现了定制化的配置, 那么这个配置类中的所有方法都不会生效
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter({ DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class,
  ValidationAutoConfiguration.class })
public class WebMvcAutoConfiguration {     
}


它给容器中配置了什么


3. 在WebMvcAutoConfiguration中有一个静态内部类 就是下面的这个


@Configuration(proxyBeanMethods = false)
@Import(EnableWebMvcConfiguration.class)
@EnableConfigurationProperties({ WebMvcProperties.class, ResourceProperties.class })
@Order(0)
public static class WebMvcAutoConfigurationAdapter implements WebMvcConfigurer {
}

从@EnableConfigurationProperties({ WebMvcProperties.class, ResourceProperties.class })


这个注解 ,我们可以知道 ,其中的相关属性就会和 XXX (配置文件) 进行绑定


WebMvcProperties 和前缀为spring.mvc相关的进行绑定


ResourceProperties 和前缀为spring.resources相关的进行绑定


拓展 : (配置类只有一个有参构造器 ,所有参数的值都会从容器中进行确定)


通过配置 add-mapping: false 就可以将所有的静态资源禁止访问


目录
相关文章
|
23天前
|
Java Spring
Spring boot 运行服务jar外配置配置文件方式总结
Spring boot 运行服务jar外配置配置文件方式总结
138 0
|
1月前
|
Java 应用服务中间件 开发者
Java面试题:解释Spring Boot的优势及其自动配置原理
Java面试题:解释Spring Boot的优势及其自动配置原理
87 0
|
4天前
|
前端开发 数据库
SpringBoot+Vue+token实现(表单+图片)上传、图片地址保存到数据库。上传图片保存位置到项目中的静态资源下、图片可以在前端回显(二))
这篇文章是关于如何在SpringBoot+Vue+token的环境下实现表单和图片上传的优化篇,主要改进是将图片保存位置从磁盘指定位置改为项目中的静态资源目录,使得图片资源可以跨环境访问,并在前端正确回显。
|
6天前
|
安全 前端开发 Java
Web端系统开发解决跨域问题——以Java SpringBoot框架配置Cors为例
在Web安全上下文中,源(Origin)是指一个URL的协议、域名和端口号的组合。这三个部分共同定义了资源的来源,浏览器会根据这些信息来判断两个资源是否属于同一源。例如,https://www.example.com:443和http://www.example.com虽然域名相同,但由于协议和端口号不同,它们被视为不同的源。同源(Same-Origin)是指两个URL的协议、域名和端口号完全相同。只有当这些条件都满足时,浏览器才认为这两个资源来自同一源,从而允许它们之间的交互操作。
Web端系统开发解决跨域问题——以Java SpringBoot框架配置Cors为例
|
9天前
|
缓存 前端开发 Java
"揭秘!SpringBoot携手Nginx,性能飙升秘籍大公开:轻松掌握配置优化,让你的应用快如闪电!"
【8月更文挑战第11天】随着微服务架构的发展,SpringBoot成为构建RESTful API的首选,Nginx则作为高性能的反向代理服务器提升应用性能。本文将探讨两者如何协同工作,包括Nginx的负载均衡策略、静态资源缓存及数据压缩配置;同时讨论SpringBoot的线程池优化、缓存策略及性能监控。通过这些方法,帮助开发者显著提高系统的整体性能和可用性。
20 1
|
22天前
|
监控 NoSQL Java
Spring Boot Actuator 使用和常用配置
Spring Boot Actuator 使用和常用配置
36 5
|
23天前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
124 6
|
19天前
|
缓存 负载均衡 Java
SpringBoot 与 Nginx 配置优化:性能拉满的关键学习方法
【8月更文挑战第1天】在现代Web开发领域,SpringBoot以其快速启动、简化配置的特性成为众多开发者的首选框架,而Nginx则以其高性能的HTTP和反向代理服务器功能著称。将两者结合,并通过精细的配置优化,可以显著提升Web应用的性能与稳定性。以下是为您学生定制的SpringBoot与Nginx配置优化的学习方法与研究路径。
36 1
|
23天前
|
Java Spring
spring boot 中默认最大线程连接数,线程池数配置查看
spring boot 中默认最大线程连接数,线程池数配置查看
42 4
|
23天前
|
SQL Java 数据库连接
springboot~mybatis-pagehelper原理与使用
【7月更文挑战第15天】MyBatis-PageHelper是用于MyBatis的分页插件,基于MyBatis的拦截器机制实现。它通过在SQL执行前动态修改SQL语句添加LIMIT子句以支持分页。使用时需在`pom.xml`添加依赖并配置方言等参数。示例代码: PageHelper.startPage(2, 10); List<User> users = userMapper.getAllUsers(); PageInfo<User> pageInfo = new PageInfo<>(users); 这使得分页查询变得简单且能获取总记录数等信息。