Local SDXL-Turbo与IoT创新:智能家居场景生成

核心内容摘要

基于java的区块链技术实现数字货币交易系统毕设
FinalShell远程服务器操作流程

ERNIE-4.5-0.3B-PT部署教程:从镜像拉取到Web界面提问全流程

文章目录

背景为什么 jar 内的 config.json 不能被覆盖

Spring Boot 静态资源加载机制

解决方案结构

核心实现优先读外部文件

完整 Dockerfile 示例

八、

总结前言在实际项目中我们经常需要让前端读取一个config.json并且希望它支持在 Docker 容器里挂载覆盖、实时生效避免每次修改都要重新打包。

背景为什么 jar 内的 config.json 不能被覆盖很多人遇到这样的场景前端请求GET /config.json想通过 Docker 挂载一份外部config.json到容器里覆盖 jar 里的那份结果发现改了也不生效 → 还是读到打包进 jar 的老版本 根本原因Spring Boot 不会自动替换 jar 内部的静态资源文件挂载的静态资源只是在查找路径里排在前面而已。

换句话说文件如果在 jar 里通过 classpath 加载的优先级并不因为挂载而被覆盖实际查找路径可能不同。

Spring Boot 静态资源加载机制在 Spring Boot 里静态资源是这样被查找的# Spring Boot

4 使用这个 spring.web.resources.static-locationsfile:/app/static/, classpath:/static/ # Spring Boot

3- 使用这个 spring.resources.static-locationsfile:/app/static/, classpath:/static/这个配置表示优先级资源位置第一外部目录 file:/app/static/第二jar 内 classpath:/static/注意这是查找顺序不是覆盖机制。

解决方案结构为了做到✔ Docker 容器挂载的 config.json 可覆盖✔ 修改后立即生效无重启无缓存✔ 支持/config.json和/wvp/config.json两种访问路径我们的整体方案是前端请求 /config.json 或 /wvp/config.json → 后端 Controller 先尝试读取 容器内 /app/config/config.json → 如果存在直接返回 → 如果不存在再 fallback 到 classpath:/static/config.json同时设置返回头Cache-Control: no-store避免浏览器缓存旧配置。

核心实现优先读外部文件在你的 Controller 里写如下逻辑RestControllerpublicclassWvpIndexController{privatestaticfinalStringEXTERNAL_PATH/app/config/config.json;privatestaticfinalStringCLASSPATH_PATHclasspath:/static/config.json;GetMapping({/config.json,/wvp/config.json})publicResponseEntityResourcegetConfig(HttpServletResponseresponse){Resourceresource;//

优先尝试读取外部挂载文件FileexternalnewFile(EXTERNAL_PATH);if(external.exists()external.isFile()){resourcenewFileSystemResource(external);}else{//

不存在则 fallback 到内置 classpathresourcenewClassPathResource(static/config.json);}// 设置不缓存response.setHeader(Cache-Control,no-store);returnResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(resource);}}

完整 Dockerfile 示例FROM openjdk:17-jdk-alpine WORKDIR /app COPY wvp.jar /app/wvp.jar COPY static /app/static # 静态资源 fallback EXPOSE 8080 ENTRYPOINT [java, \ -Dspring.web.resources.static-locationsfile:/app/static/,classpath:/static/, \ -Dspring.resources.static-locationsfile:/app/static/,classpath:/static/, \ -jar, wvp.jar]

八、

总结方案是否可挂载覆盖是否热更新是否兼容多个路径只依赖 Spring Boot 静态资源❌❌❌加上后端优先逻辑✅✅✅✨ 推荐方案后端优先读取外部挂载文件 fallback classpath no-cache这样你只要docker-composeup -d然后在宿主机改config.json前端刷新立即生效

大地第二页在线观看完整-大地第二页在线观看完整应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123