当前位置: 首页 > 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

http://www.lqws.cn/news/127891.html

相关文章:

  • constexpr 是 C++11 引入的关键字
  • Elasticsearch 集群运维常用命令详解
  • IDEA集成JRebel插件,实现实时热部署
  • vue2 项目中 npm run dev 运行98% after emitting CopyPlugin 卡死
  • Windows系统下npm报错node-gyp configure got “gyp ERR“解决方法
  • 【从0-1的HTML】第3篇:html引入css的3种方式
  • 通过ca证书的方式设置允许远程访问Docker服务
  • C++ 中的 const 知识点详解,c++和c语言区别
  • HTMLCSS 学习总结
  • Server - 使用 Docker 配置 PyTorch 研发环境
  • 【RAG优化】rag整体优化建议
  • Git的使用技巧
  • Transformer-BiLSTM、Transformer、CNN-BiLSTM、BiLSTM、CNN五模型时序预测
  • STM32的ADC简介
  • STM32----IAP远程升级
  • 理解继承与组合的本质:Qt 项目中的设计选择指南
  • 基于cnn的通用图像分类项目
  • 从npm库 Vue 组件到独立SDK:打包与 CDN 引入的最佳实践
  • ann算法的种类有哪些,之间的区别,各自的适用场景
  • [蓝桥杯]填字母游戏
  • 开发源码搭建一码双端应用分发平台教程:逐步分析注意事项
  • # Vue + OpenLayers 完整项目开发指南
  • 物联网协议之MQTT(一)基础概念和设备
  • C++内存列传之RAII宇宙:智能指针
  • 20-项目部署(Docker)
  • haribote原型系统改进方向
  • 编程笔试练习(1)
  • 6.4本日总结
  • mac版excel如何制作时长版环形图
  • Delft3D软件介绍及建模原理和步骤;Delft3D数值模拟溶质运移模型建立;地表水环境影响评价报告编写思路