当前位置: 首页 > news >正文

若依Ruoyi中优先从本地文件加载静态资源

   1、Spring Boot方法说明       

在 Spring Boot 中,若要让addResourceHandlers优先加载 JAR 包内的资源,可通过合理设置资源位置的顺序来达成。因为 Spring 会按照资源位置配置的先后顺序进行搜索,所以把 JAR 包内的资源路径放在前面就能实现优先加载。

下面是一个配置示例:

@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/",  // 优先加载JAR包内的资源"file:./static/"      // 再加载外部文件系统的资源).setCachePeriod(3600).setUseLastModified(true);}
}

配置说明
资源搜索顺序:Spring 会按照addResourceLocations方法中路径的顺序去搜索资源。在上述例子中,会先搜索 JAR 包内classpath:/static/路径下的资源,若找不到,才会去搜索外部文件系统file:./static/路径下的资源。
外部资源覆盖:要是你有覆盖 JAR 包内资源的需求,比如在测试或生产环境中,可以把外部资源路径添加到 JAR 包资源路径之后。
路径协议
       classpath:用于引用 JAR 包内的资源。
       file:用于引用文件系统中的资源。

2、若依中调整静态资源加载方式

调整ResourcesConfig的addResourceHandlers(ResourceHandlerRegistry registry)方法,模块位置在ruoyi-framework\src\main\java\com\ruoyi\framework\config\ResourcesConfig.java文件中。

 @Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry){//Spring Boot(static → public → resources → META-INF/resources)检查这些目录中的资源/** 本地文件上传路径 */registry.addResourceHandler(Constants.RESOURCE_PREFIX + "/**").addResourceLocations("file:" + RuoYiConfig.getProfile() + "/");/** swagger配置 */registry.addResourceHandler("/swagger-ui/**").addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");/** logo和img文件加载优先级配置,文件访问权限,由ShiroConfig.java配置*/registry.addResourceHandler("/logo/**") //访问路径.addResourceLocations("file:./static/logo/", //优先加载外部文件系统的资源,路径必须以‘/’结尾"classpath:/static/logo/" //再加载JAR包内的资源);registry.addResourceHandler("/img/**").addResourceLocations("file:./static/img/","classpath:/static/img/");}

如果需要调整权限,比如logo文件在登录前允许访问,需要在ShiroConfig.java的

ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager)添加相应的过滤器,如:
 public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager){CustomShiroFilterFactoryBean shiroFilterFactoryBean = new CustomShiroFilterFactoryBean();// Shiro的核心安全接口,这个属性是必须的shiroFilterFactoryBean.setSecurityManager(securityManager);// 身份认证失败,则跳转到登录页面的配置shiroFilterFactoryBean.setLoginUrl(loginUrl);// 权限认证失败,则跳转到指定页面shiroFilterFactoryBean.setUnauthorizedUrl(unauthorizedUrl);// Shiro连接约束配置,即过滤链的定义LinkedHashMap<String, String> filterChainDefinitionMap = new LinkedHashMap<>();// 对静态资源设置匿名访问filterChainDefinitionMap.put("/favicon.ico**", "anon");filterChainDefinitionMap.put("/ruoyi.png**", "anon");filterChainDefinitionMap.put("/irootech.png**", "anon");filterChainDefinitionMap.put("/static/**", "anon");filterChainDefinitionMap.put("/logo/**", "anon"); //logofilterChainDefinitionMap.put("/html/**", "anon");filterChainDefinitionMap.put("/css/**", "anon");filterChainDefinitionMap.put("/docs/**", "anon");filterChainDefinitionMap.put("/fonts/**", "anon");filterChainDefinitionMap.put("/img/**", "anon"); //imgfilterChainDefinitionMap.put("/ajax/**", "anon");filterChainDefinitionMap.put("/js/**", "anon");filterChainDefinitionMap.put("/ruoyi/**", "anon");filterChainDefinitionMap.put("/captcha/captchaImage**", "anon");filterChainDefinitionMap.put("/api/**", "anon");
...

3、文件位置

     在jar包运行目录下,创建如下两个目录,对应的文件就会覆盖jar包中的同名文件

/static/logo
/static/img

相关文章:

  • 理解网络协议
  • 3D动画在微信小程序的实现方法
  • el-amap-bezier-curve运用及线弧度设置
  • Vue前端篇——项目目录结构介绍
  • 学习笔记(23): 机器学习之数据预处理Pandas和转换成张量格式[1]
  • socket是什么
  • Java - 数组
  • 技术文章大纲:SpringBoot自动化部署实战
  • 【echarts】堆叠柱形图
  • 6.4 C++作业
  • Learning a Discriminative Prior for Blind Image Deblurring论文阅读
  • [C]深入解析条件式日志宏的设计原理
  • machine_env_loader must have been assigned before creating ssh child instance
  • CMake入门:3、变量操作 set 和 list
  • [蓝桥杯]碱基
  • 【envoy】-1.安装与下载源码
  • 重要通知:6月申报纳税期限延至6月16日(附2025年办税日历 图文版)
  • Docker轻松搭建Neo4j+APOC环境
  • 《树数据结构解析:核心概念、类型特性、应用场景及选择策略》
  • AI全链路赋能内容创作:电商新势力起飞
  • 世界工厂采购网站/百度搜索热度
  • 张家港普通网站建设/如何交换友情链接
  • 如何网站建设自己怎么个人网站/宁德市属于哪个省份
  • 珠海医疗网站建设公司/打开百度首页
  • 关于网站建设 策划文案/建站快车
  • b站怎么付费推广自己的视频/网络营销策划的概念