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 就可以将所有的静态资源禁止访问


目录
相关文章
|
11天前
|
XML 前端开发 Java
一文搞懂 Spring Boot 自动配置原理
Spring Boot 自动配置原理揭秘:通过 `@EnableAutoConfiguration` 加载 `META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports` 中的配置类,结合 `@Conditional` 按条件注入 Bean,实现“开箱即用”。核心在于约定大于配置,简化开发。
221 0
|
2月前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
|
4月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
797 0
|
4月前
|
Java Spring
Spring Boot配置的优先级?
在Spring Boot项目中,配置可通过配置文件和外部配置实现。支持的配置文件包括application.properties、application.yml和application.yaml,优先级依次降低。外部配置常用方式有Java系统属性(如-Dserver.port=9001)和命令行参数(如--server.port=10010),其中命令行参数优先级高于系统属性。整体优先级顺序为:命令行参数 > Java系统属性 > application.properties > application.yml > application.yaml。
778 0
|
22天前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
163 3
|
22天前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
195 2
|
2月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
394 4
|
2月前
|
传感器 Java 数据库
探索Spring Boot的@Conditional注解的上下文配置
Spring Boot 的 `@Conditional` 注解可根据不同条件动态控制 Bean 的加载,提升应用的灵活性与可配置性。本文深入解析其用法与优势,并结合实例展示如何通过自定义条件类实现环境适配的智能配置。
129 0
探索Spring Boot的@Conditional注解的上下文配置
|
3月前
|
安全 算法 Java
在Spring Boot中应用Jasypt以加密配置信息。
通过以上步骤,可以在Spring Boot应用中有效地利用Jasypt对配置信息进行加密,这样即使配置文件被泄露,其中的敏感信息也不会直接暴露给攻击者。这是一种在不牺牲操作复杂度的情况下提升应用安全性的简便方法。
840 10
|
4月前
|
前端开发 Java 数据库连接
SpringBoot参数校验底层原理和实操。深度历险、深度解析(图解+秒懂+史上最全)
SpringBoot参数校验底层原理和实操。深度历险、深度解析(图解+秒懂+史上最全)
SpringBoot参数校验底层原理和实操。深度历险、深度解析(图解+秒懂+史上最全)
下一篇
开通oss服务