【SpringBoot3】实现自定义配置——以静态资源自定义配置为例(源码+代码示例)

这里写目录标题

  • 1 配置类位置
  • 2 静态资源配置方式
  • 3 整体配置示例
    • 3.1 创建配置类
    • 3.2 实现配置方法
    • 3.3 指定配置文件属性

1 配置类位置

  • 在左侧搜索autoconfigure可以找到·spring-boot-autoconfigure包,打开其下的META-INF -> spring -> AutoConfiguration.imports`
    在这里插入图片描述
  • 里面是SpringBoot启动会默认加载 142个配置类,但是其实并不是所有的配置类都会生效,会根据注解@ConditionOnXXX,按需生效
    在这里插入图片描述
  • ctrl点击进入其中的org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration
    在这里插入图片描述
  • 其中的WebMvcAutoConfigurationAdapter实现了WebMvcConfigurerWebMvcConfigurer提供了配置SpringMVC底层的所有组件入口

在这里插入图片描述

alt+7 可以获得接口定义的所有的方法

2 静态资源配置方式

  • application.properties或者application.yaml中增加配置。因为WebMvcAutoConfigurationAdapter上的注解@EnableConfigurationProperties({ WebMvcProperties.class, WebProperties.class })因此选择在这两个文件中找配置的属性
    在这里插入图片描述
  • 其中, WebMvcProperties定义的属性以spring.mvc为开头
    在这里插入图片描述
  • WebProperties定义的属性以spring.web为开头
    在这里插入图片描述

3 整体配置示例

3.1 创建配置类

创建一个配置类,通常使用 @Configuration 注解标记,并在该类中定义配置方法。

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class CustomWebMvcConfig implements WebMvcConfigurer {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {// 配置自定义的静态资源路径,例如将所有访问路径以 "/my-resources/" 开头的请求映射到 "classpath:/my-static-resources/"registry.addResourceHandler("/my-resources/**").addResourceLocations("classpath:/my-static-resources/");}
}

在这个例子中,CustomWebMvcConfig 类实现了 WebMvcConfigurer 接口,覆盖了其中的 addResourceHandlers 方法,用于配置自定义的静态资源路径。

3.2 实现配置方法

在配置类中定义用于自定义静态资源配置的方法,使用 addResourceHandlers 方法。如果你希望将自定义的配置放在application.properties 中,可以使用 @Value 注解注入属性值,例如:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class CustomWebMvcConfig implements WebMvcConfigurer {@Value("${custom.static.resource.path}")private String customStaticResourcePath;@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/my-resources/**").addResourceLocations(customStaticResourcePath);}
}

3.3 指定配置文件属性

如果需要,你可以在application.properties(或 application.yml)中定义一些属性,以便在配置类中引用(只是改值,也可以不写自己的配置类)。

  • spring.mvc: 静态资源访问前缀路径
  • spring.web:
    • 静态资源目录
    • 静态资源缓存策略

application.properties如下设置:

#1、spring.web:
# 1.配置国际化的区域信息
# 2.静态资源策略(开启、处理链、缓存)#开启静态资源映射规则
spring.web.resources.add-mappings=true#设置缓存
spring.web.resources.cache.period=3600
##缓存详细合并项控制,覆盖period配置:
## 浏览器第一次请求服务器,服务器告诉浏览器此资源缓存7200秒,7200秒以内的所有此资源访问不用发给服务器请求,7200秒以后发请求给服务器
spring.web.resources.cache.cachecontrol.max-age=7200
## 共享缓存
spring.web.resources.cache.cachecontrol.cache-public=true
#使用资源 last-modified 时间,来对比服务器和浏览器的资源是否相同没有变化。相同返回 304
spring.web.resources.cache.use-last-modified=true#自定义静态资源文件夹位置
spring.web.resources.static-locations=classpath:/a/,classpath:/b/,classpath:/static/#2、 spring.mvc
## 2.1. 自定义webjars路径前缀
spring.mvc.webjars-path-pattern=/wj/**
## 2.2. 静态资源访问路径前缀
spring.mvc.static-path-pattern=/static/**

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/339780.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

06.构建大型语言模型步骤

在本章中,我们为理解LLMs奠定了基础。在本书的其余部分,我们将从头开始编写一个代码。我们将以 GPT 背后的基本思想为蓝图,分三个阶段解决这个问题,如图 1.9 所示。 图 1.9 本书中介绍的构建LLMs阶段包括实现LLM架构和数据准备过程、预训练以创建基础模型,以及微调基础模…

Java使用IText生产PDF时,中文标点符号出现在行首的问题处理

Java使用IText生成PDF时,中文标点符号出现在行首的问题处理 使用itext 5进行html转成pdf时,标点符号出现在某一行的开头 但这种情况下显然不符合中文书写的规则,主要问题出在itext中的DefaultSplitCharacter类,该方法主要用来判断…

Windows下安装mariadb10.5数据库及配置详细教程

1、简介 MariaDB数据库管理系统是一款MySQL的替代数据库。MariaDB由MySQL的创始人麦克尔维德纽斯主导开发,是可扩展的,可靠的SQL服务器的合乎逻辑的选择,MariaDB 10.5 是 MariaDB 当前的稳定系列。 2、下载 下载地址:Download M…

Android SDK环境搭建[图解]; 解决问题Done. Nothing was installed.

安装SDK Android SDK环境搭建 依赖java环境,需要自备Java环境 (100%实操成功) 目录 1. 解压:解压到非中文无特殊字符的目录 2. 双击:SDK Manager.exe,不要选全部!不要选全部!不要选全部!(会下很久) 3. 然后勾选组件​ 4. 设置环境变量 …

MySQL加锁规则

项目编写涉及到数据持久化一般选择使用MySQL。由于时间原因,数据库使用我选择了无脑三板斧:1. 建立了索引加速查询、2. 关闭自动提交事务、3. 在需要确保原子性的数据库操作之间手动创建和提交事务。 这么一看,仿佛即使是实际开发也与你此前…

设置若依Token过期时间

方法一:设置永不过期,有安全隐患,不建议使用 redisCache.setCacheObject(userKey, loginUser); 方法二:修改application.yml

将 OpenCV 与 Eclipse 一起使用(插件 CDT)

先决条件 两种方式,一种是直接形成项目,另一种是 CMake 先决条件 在您的工作站中安装了 Eclipse(只需要 C/C 的 CDT 插件)。您可以按照以下步骤操作: 转到 Eclipse 站点下载面向 C/C 开发人员的 Eclipse IDE。根据您…

蓝桥杯省赛无忧 STL 课件11 pair

01 pair的定义和结构 在C中&#xff0c;pair是一个模板类&#xff0c;用于表示一对值的组合&#xff0c;它位于头文件中。 pair类的定义如下: template<class T1,class T2>struct pair{T1 first;//第一个值T2 second;//第二个值// 构造函数pair();pair(const T1& X…

模拟超市商品结算系统

要求:全程一个角色(管理员即用户) (1)需要管理员注册与登录 (2)管理员登录之后&#xff0c;可以进行上架新的商品(商品名称和单价) (3)管理员登录之后&#xff0c;也可以下架商品 (4)在节假日有优惠活动,可以对其中的一些商品修改相应的单价(价格提高和价格降低都可以) (5)用户…

如何充分发挥HubSpot CRM优势,优化销售流程?

在竞争激烈的商业环境中&#xff0c;销售流程的优化对企业至关重要。HubSpot CRM作为一款全面而强大的工具&#xff0c;为企业提供了实现销售优化的完美平台。让我们深入了解如何最大程度地利用HubSpot CRM&#xff0c;提高销售效率。 1.建立清晰的销售流程 HubSpot CRM的第一…

MySQL的三种存储引擎 InnoDB、MyISAM、Memory

InnoDB 1). 介绍 InnoDB是一种兼顾高可靠性和高性能的通用存储引擎&#xff0c;在 MySQL 5.5 之后&#xff0c;InnoDB是默认的MySQL 存储引擎。 2). 特点 DML操作遵循ACID模型&#xff0c;支持事务&#xff1b; 行级锁&#xff0c;提高并发访问性能&#xff1b; 支持外键F…

爱情视频相册怎么做?2.14情人节表白/活动视频模板PR剪辑素材

美好爱情故事&#xff0c;情人节表白视频相册怎么做&#xff1f;粉色浪漫的PR情人节表白/活动视频模板剪辑素材mogrt下载。 特征&#xff1a;可编辑文字和调整颜色&#xff0c;通过智能对象替换图像&#xff0c;RGB颜色模式&#xff0c;易于自定义&#xff0c;无需插件&#xf…